定义一个分页结果类
import lombok.AllArgsConstructor;import lombok.Data;import java.io.Serializable;import java.util.List;/** * @description 流分页 */@Data@AllArgsConstructorpublic class StreamPage implements Serializable { private int total; private List list;}
利用流分页
import java.util.Collections;import java.util.List;import java.util.stream.Collectors;/** * @description 分页工具类 */public class StreamPageUtils { /** page 从1开始 * 分页处理 */ public static <T> StreamPage page(List<T> list, int page, int size) { if ((page - 1) * size > list.size()) { return new StreamPage(list.size(), Collections.EMPTY_LIST); } int total = list.size(); list = list.stream() .skip((page - 1) * size) .limit(size) .collect(Collectors.toList()); return new StreamPage(total, list); }}
参考文章:https://www.jianshu.com/p/163c6dd5c5d3