方式一: stream流数据处理skip、limit方法 实现内存分页
- stream skip跳行方法
//skip:跳跃 从第几个开始 下标从0开始
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
System.out.println("原始数据是:" + list);
//stream skip跳行方法
list.stream().skip(1).forEach(s-> System.out.println(s));
结果
原始数据是:[1, 2, 3, 4, 5, 6, 7, 8]
2
3
4
5
6
7
8
- stream limit限行方法
list.stream().limit(2).forEach(t -> System.out.println(t));
结果:
1
2
- skip 和 limit 组合 实现内存分页
list.stream().skip(2).limit(3).forEach(t -> System.out.print(t + "\t"));
结果 ` skip 和 limit 组合 实现内存分页 3 4 5
推荐内存分页
records = records.stream().skip((pageNum - 1) * pageSize).limit(pageSize ).collect(Collectors.toList());
/**
-
Description: 内存分页
- @param records 待分页的数据
- @param pageNum 当前页码
- @param pageSize 每页显示的条数
- @return 分页之后的数据 */ public static List pagination(List records, int pageNum, int pageSize) { if (CollectionUtils.isEmpty(records)) { return Collections.emptyList(); } if (pageNum < 0 || pageSize < 0) { return Collections.emptyList(); } int totalCount = records.size(); int pageCount; int remainder = totalCount % pageSize; if (remainder > 0) { pageCount = totalCount / pageSize + 1; } else { pageCount = totalCount / pageSize; } System.out.println("总记录数为:"+totalCount+" 当前页码为:"+pageNum+" 每页显示的条数为:" + + + pageSize); if (remainder == 0) { records = records.stream().skip((pageNum - 1) * pageSize).limit(pageSize * pageNum).collect(Collectors.toList()); return records; } else { //最后一页 if (pageNum == pageCount) { records = records.stream().skip((pageNum - 1) * pageSize).limit(totalCount).collect(Collectors.toList()); return records; } else { records = records.stream().skip((pageNum - 1) * pageSize).limit(pageSize ).collect(Collectors.toList()); return records; } } }
public static void main(String[] args) { List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); System.out.println("原始数据是:" + list);
int pageNum = 3;
int pageSize = 5;
list = list.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
System.out.println(list);
list.forEach(s -> System.out.println(s.intValue()));
}
其他内存分页
```
list.clear();
for (List<T> listTemp : defaultListMap.values()) {
list.addAll(listTemp);
}
//筛选
list.removeIf(p -> !Objects.equals(p.getBusinessType(), request.getBusinessType()));
}
//总数量
if (Objects.equals(request.getReturnNum(), true)) {
response.setTotalNum(list.size());
}
//分页及排序处理
list = list.stream().sorted(Comparator.comparing(T::getF).reversed()).collect(Collectors.toList());
int start = 0;
if (request.getPageNumber() > 1) {
start = ((request.getPageNumber() - 1) * request.getPageSize());
}
if (list.size() <= ((request.getPageNumber() - 1) * request.getPageSize())) {
list = new ArrayList<>();
} else if (list.size() >= request.getPageNumber() * request.getPageSize()) {
list = list.subList(start, request.getPageNumber() * request.getPageSize() - 1);
} else {
list = list.subList(start, list.size());
}
}
response.setFormConfigs(list);
```