/**
* 内存分页
* @param list 待分页的数据
* @param pageNum 当前页
* @param pageSize 每页的数量
* @return PageInfo 分页之后的数据
*/
public static <T> com.github.pagehelper.PageInfo<T> ramPagination(List<T> list, int pageNum, int pageSize) {
// 初始化分页集合
List pageList = Lists.newArrayList();
int total = 0;
int pages = 0;
if (!CollectionUtils.isEmpty(list) && pageNum > 0 && pageSize > 0) {
total = list.size();
int remainder = total % pageSize;
pages = (remainder > 0) ? total/pageSize + 1 : total/pageSize;
if (remainder == 0) {
pageList = list.stream().skip((pageNum - 1) * (long)pageSize).limit(pageSize * pageNum).collect(Collectors.toList());
} else {
if (pageNum == pages) {
pageList = list.stream().skip((pageNum - 1) * (long)pageSize).limit(total).collect(Collectors.toList());
} else {
pageList = list.stream().skip((pageNum - 1) * (long)pageSize).limit(pageSize * pageNum).collect(Collectors.toList());
}
}
}
// 封装结果集
com.github.pagehelper.PageInfo pageInfo = new com.github.pagehelper.PageInfo();
pageInfo.setTotal(total);// 总记录数
pageInfo.setPageNum(pageNum);// 当前页
pageInfo.setPageSize(pageSize);// 每页的数量
pageInfo.setSize(pageList.size());// 当前页的数量
pageInfo.setPages(pages);// 总页数
pageInfo.setList(pageList);// 结果集
return pageInfo;
}
内存分页工具
于 2024-03-13 20:42:27 首次发布