/**
* 请求不存在的页码时,返回最后一页的数据
*/
public static <T extends Comparable<T>> List<T> page(List<T> list, Integer pageNum, Integer pageSize) {
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
if (pageNum == null || pageSize == null) {
return list;
}
int totalRows = list.size();
if (pageSize < 0) {
pageSize = 10;
}
int totalPage = ((totalRows % pageSize) == 0) ? (totalRows / pageSize) : ((totalRows / pageSize) + 1);
if (pageNum <= 0) {
pageNum = 1;
} else if (pageNum > totalPage) {
pageNum = totalPage;
}
int offset = (pageNum - 1) * pageSize;
return list.stream().sorted(Comparator.reverseOrder()).skip(offset).limit(pageSize).collect(Collectors.toList());
}
/**
* 开始分页
*
* @param list
* @param pageNum 用户请求页码
* @param pageSize 每页多少条数据
* @return 请求不存在的页码时,返回page data为空
*/
public static List startPage(List list, Integer pageNum,
Integer pageSize) {
List<Object> pageList = new ArrayList<>();
if (CollectionUtils.isEmpty(list)) {
return pageList;
}
Integer count = list.size(); // 记录总数
Integer pageCount = 0; // 数据总页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; // 开始索引
int toIndex = 0; // 结束索引
if (pageNum > pageCount) { // 用户请求页码 > 数据总页数时返回空数据
return pageList;
} else if (pageNum != pageCount) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
pageList = list.subList(fromIndex, toIndex);
return pageList;
}