使用java代码实现逻辑分页
困扰笔者很久的逻辑分页
// 开始发车了 java
// 核心逻辑
public static PageInfo pagingUtilityList(Integer pageNumData, Integer pageSizeData, List<Object> dataList) {
int pageNum;
int pageSize;
int startRow;
int endRow;
int pages;
List<Object> subList = new ArrayList<>();
List<Object> list1 = new ArrayList<>();
if (!CollectionUtils.isEmpty(dataList)) {
list1 = (List<Object>) dataList.get(0);
}
pageNum = pageNumData <= 1 ? 1 : pageNumData;
pageSize = pageSizeData <= 1 ? 1 : pageSizeData;
if (CollectionUtils.isEmpty(list1)) {
PageInfo pageInfo = new PageInfo();
pageInfo.setList(list1);
return pageInfo;
}
int totalCount = list1.size();
if (totalCount <= pageSize) {
pages = 1;
} else {
if (totalCount % pageSize > 0) {
pages = totalCount / pageSize + 1;
} else {
pages = totalCount / pageSize;
}
}
startRow = pageNum > 0 ? (pageNum - 1) * pageSize : 0;
endRow = startRow + pageSize * (pageNum > 0 ? 1 : 0);
if (endRow > totalCount) {
endRow = totalCount;
}
PageInfo pageInfo = new PageInfo();
try {
subList = list1.subList(startRow, endRow);
} catch (Exception e) {
// 如果端点索引值超出范围
System.out.println("如果端点索引值超出范围\t" + e);
subList = list1.subList(1, endRow);
}
pageInfo.setPages(pages);
pageInfo.setList(subList);
pageInfo.setTotal(list1.size());
return pageInfo;
}
end结束了;
主要思路 在于 针对 java.util.ArrayList 中 subList 特性进行处理。
subList 逻辑分页
- 分页的 开始值 与 结束值
详情见图片
参考链接: 为 jdk api 1.8_google
- 主要处理逻辑见笔者的 代码实现
正常逻辑处理即可
end:结束了 再见 bye!!!