定义一个分页结果类
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @description 流分页
*/
@Data
@AllArgsConstructor
public 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