java实现list分页功能
程序员文章站
2022-05-03 23:43:19
最近有这么一个需求:要将数据库中查询出来的数据 通过算法计算得出每条数据权重,然后将数据按照权重倒序排序,并分页。倒序排序:list = allListByIssueType.stream() .sorted(Comparator.comparing(ResCenterAuditDTO::getMatchRate).reversed()) .collect(Collectors.toList());分页: list = getPa...
最近有这么一个需求:要将数据库中查询出来的数据 通过算法计算得出每条数据权重,然后将数据按照权重倒序排序,并分页。
倒序排序:
list = allListByIssueType.stream()
.sorted(Comparator.comparing(ResCenterAuditDTO::getMatchRate).reversed())
.collect(Collectors.toList());
分页:
list = getPageSizeDataForRelations(list, size, page);
具体实现:
/**
* 手动分页类
* @param datas
* @param pageSize
* @param pageNo
* @param <T>
* @return
*/
public static <T> List<T> getPageSizeDataForRelations(List<T> datas,int pageSize,int pageNo){
int startNum = (pageNo-1)* pageSize+1 ; //起始截取数据位置
if(startNum > datas.size()){
return null;
}
List<T> res = new ArrayList<>();
int rum = datas.size() - startNum;
if(rum < 0){
return null;
}
if(rum == 0){ //说明正好是最后一个了
int index = datas.size() -1;
res.add(datas.get(index));
return res;
}
if(rum / pageSize >= 1){ //剩下的数据还够1页,返回整页的数据
for(int i=startNum;i<startNum + pageSize;i++){ //截取从startNum开始的数据
res.add(datas.get(i-1));
}
return res;
}else if((rum / pageSize == 0) && rum > 0){ //不够一页,直接返回剩下数据
for(int j = startNum ;j<=datas.size();j++){
res.add(datas.get(j-1));
}
return res;
}else{
return null;
}
}
本文地址:https://blog.csdn.net/weixin_43748936/article/details/109628654