1.原因

工作中有的时候我们要处理的分页是无法全部用数据库去处理的,因为有些业务数据需要计算,所以我们需要把数据拿到程序中去分页

2.代码

             //前端传入分页参数
        Pageable pageable = new Pageable
pageable.setPageNum(0);
pageable.setPageSize(20);

       List<XueClazz> xueClazzList = new ArrayList<>();
//分页 Integer totalNum = xueClazzeList.size();
//默认从零分页,这里要考虑这种情况,下面要计算。
int pageNum = pageable.getPageNumber() + 1; int pageSize = pageable.getPageSize(); Integer totalPage = 0; if (totalNum > 0) { totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1; } if (pageNum > totalPage) { pageNum = totalPage; } int startPoint = (pageNum - 1) * pageSize; int endPoint = startPoint + pageSize; if (totalNum <= endPoint) { endPoint = totalNum; } xueClazzeList = xueClazzeList.subList(startPoint, endPoint);

3.反思

在内存分页的时候一定要考虑数据的数量,如果一次处理的数据条数太多会导致接口响应时间过长。所以在处理大数据量并且需要用到程序分页的话,最好是用时间等条件去控制一下查询的条数。