定义一个分页结果类

  1. import lombok.AllArgsConstructor;
  2. import lombok.Data;
  3. import java.io.Serializable;
  4. import java.util.List;
  5. /**
  6. * @description 流分页
  7. */
  8. @Data
  9. @AllArgsConstructor
  10. public class StreamPage implements Serializable {
  11. private int total;
  12. private List list;
  13. }

利用流分页

  1. import java.util.Collections;
  2. import java.util.List;
  3. import java.util.stream.Collectors;
  4. /**
  5. * @description 分页工具类
  6. */
  7. public class StreamPageUtils {
  8. /** page 从1开始
  9. * 分页处理
  10. */
  11. public static <T> StreamPage page(List<T> list, int page, int size) {
  12. if ((page - 1) * size > list.size()) {
  13. return new StreamPage(list.size(), Collections.EMPTY_LIST);
  14. }
  15. int total = list.size();
  16. list = list.stream()
  17. .skip((page - 1) * size)
  18. .limit(size)
  19. .collect(Collectors.toList());
  20. return new StreamPage(total, list);
  21. }
  22. }

参考文章:https://www.jianshu.com/p/163c6dd5c5d3