Java 对list集合分页截取分页
程序员文章站
2022-03-04 17:54:30
...
代码中注释了很清楚,也很直观,需要三个参数,分别是要截取的list集合,当前页,每页条数,具体代码如下:
/**
* 获取截取当前页面的数据
*
* @param list 要截取的集合
* @param pageNum 当前页
* @param pageSize 每页几条
* @return
*/
private static List<PartnerScheduleBO> getListPaging(List<PartnerScheduleBO> list, int pageNum, int pageSize) {
//开始下标
int startIndex = (pageNum - 1) * pageSize;
//结束下标 subList()方法不包含结束下标的元素
int endIndex = pageNum * pageSize;
//list总条数
int total = list.size();
//总页数
int pageCount = 0;
//通过取余决定是否给总页数加1
int num = total % pageSize;
if (num == 0) {
pageCount = total / pageSize;
} else {
pageCount = total / pageSize + 1;
}
//如果当前页是最后一页的话 要包含集合的最后一条数据,因为sublist方法本身结束的下标是不包含当前元素的
if (pageNum == pageCount) {
endIndex = total;
}
return list.subList(startIndex, endIndex);
}
以下代码仅供参考,使用了分页插件:
@Override
public PageDTO<PartnerScheduleBO> getPartnerScheduleList(int pageNum,int pageSize
,PartnerScheduleTrackQuery partnerScheduleTrackQuery) {
List<PartnerScheduleBO> partnerScheduleBOS = new ArrayList<>();
List<PartnerBO> partners = this.partnerScheduleTrackMapper.findPartnerScheduleTrackListByPartnerScheduleTrackQuery(partnerScheduleTrackQuery);
partners.forEach(partnerBO -> {
PartnerScheduleBO partnerScheduleBO = new PartnerScheduleBO();
partnerScheduleBO.setId(partnerBO.getId());
partnerScheduleBO.setPartnerNo(partnerBO.getPartnerNo());
partnerScheduleBO.setPartnerName(partnerBO.getPartnerName());
partnerScheduleBO.setStage(partnerBO.getStage());
partnerScheduleBO.setAppScheduleStage(partnerBO.getAppScheduleStage());
partnerScheduleBO.setTrackerAdminId(partnerBO.getTrackerAdminId());
partnerScheduleBO.setAppScheduleAddTime(partnerBO.getAppScheduleAddTime());
partnerScheduleBO.setRemark(partnerBO.getRemark());
List<ScheduleTrackBO> scheduleTrackBOS = partnerBO.getScheduleTrackBOS();
if(!CollectionUtils.isEmpty(scheduleTrackBOS)){
partnerScheduleBO.setPlanTimeStart(scheduleTrackBOS.get(0).getPlanTimeStart());
partnerScheduleBO.setPlanTimeEnd(scheduleTrackBOS.get(scheduleTrackBOS.size()-1).getPlanTimeEnd());
}
partnerScheduleBOS.add(partnerScheduleBO);
});
PageDTO<PartnerScheduleBO> pageDTO = new PageDTO<>();
pageDTO.setList(getListPaging(partnerScheduleBOS,pageNum,pageSize));
pageDTO.setPageNum(pageNum);
pageDTO.setPageSize(pageSize);
pageDTO.setTotal(Long.valueOf(partners.size()));
return pageDTO;
}
如有疑问请留言。
上一篇: sed 学习笔记
下一篇: 五、编写高质量的代码—数组和集合(笔记)
推荐阅读
-
java使用lambda表达式对List集合进行操作技巧(JDK1.8)
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
Java List分页功能实现代码实例
-
java实现list分页功能
-
针对list集合进行分页展示
-
java8特性快速对list集合的筛选过滤和计算
-
Java 使用List sort()方法对复杂对象集合排序(基于Lambda表达式)
-
java8的新特性,Collections.sort(排序的List集合)的使用,对list封装Map里面的某个值进行排序
-
两种List集合分页方式