1.简介
查列表时,筛选条件维度不同,导致不能使用数据库分页,那么理论上我们只能用内存分页。
简单点,就是把我们想要的数据都查出来,然后分页。
2.具体实现
public static void main(String[] args) {
List<Long> ids = Arrays.asList(1L, 3L, 5L, 6L, 8L);
PageCondition pageCondition = new PageCondition();
pageCondition.setPageSize(2);
// 打印所有分页数据
for (int pageNum = 1; ;pageNum ++) {
pageCondition.setPageNum(pageNum);
List<Long> pageList = PageUtils.getListByPageCondition(ids, pageCondition);
System.out.println(pageList.toString());
if (pageList.size() != pageCondition.getPageSize()) {
break;
}
}
}
// 分页工具类
public class PageUtils {
// 可以更严谨
private static void setStartIndex(PageCondition pageCondition) {
int startIndex = (pageCondition.getPageNum() - 1) * pageCondition.getPageSize();
pageCondition.setStartIndex(startIndex);
}
public static<T> List<T> getListByPageCondition(List<T> resultList, PageCondition pageCondition) {
PageUtils.setStartIndex(pageCondition);
if (pageCondition.getStartIndex() > resultList.size()) {
return Lists.newArrayList();
}
int endIndex = pageCondition.getStartIndex() + pageCondition.getPageSize();
if (endIndex > resultList.size()) {
endIndex = resultList.size();
}
return resultList.subList(pageCondition.getStartIndex(), endIndex);
}
}
3.运行结果
[1, 3]
[5, 6]
[8]