if (ObjectUtils.isNotEmpty(params.get("pageSize")) && ObjectUtils.isNotEmpty(params.get("pageNum"))){
int pageSize = params.getInt("pageSize");
int pageNum = params.getInt("pageNum");
resultList = resultList.stream().skip((pageNum - 1) * pageSize )
.limit(pageSize)
.collect(Collectors.toList());
returnMap.put("list",resultList);
return returnMap;
}
获取分页参数:
pageNum :表示起始位置,通常是从1开始的,所以需要减1以得到实际的索引(数组/列表索引从0开始)。
pageSize:表示每页的记录数。
使用Stream API进行分页:
skip():跳过(pageNum - 1) * pageSize个元素,这相当于跳过了 (pageNum - 1) 页的记录。
limit():限制返回的元素数量,最多返回pageSize个元素。
collect():将处理后的流转换回List<Entity>。
这个例子中的分页逻辑是基于当前resultList的大小,而不是基于总记录数。这意味着如果resultList的大小小于pageNum 所表示的位置,skip()会跳过所有元素,返回一个空列表。同样,如果pageSize大于resultList的大小,limit()也不会超出实际的元素数量。
请注意,这种方法假设map中包含"pageNum "和"pageSize"这两个键,且对应的值都是有效的整数。在实际应用中,你需要进行错误检查,确保这些值是有效的,并处理可能出现的异常情况。例如,验证输入是否为非负整数,以及在map中是否存在这些键。