Java的stream流进行分页取数据

java 复制代码
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class StreamPagination {
    public static void main(String[] args) {
        List<Integer> data = IntStream.rangeClosed(1, 100).boxed().collect(Collectors.toList());

        int pageSize = 10;
        int pageNumber = 2;

        List<Integer> pageData = getPageData(data, pageSize, pageNumber);
        List<Integer> pageData1 = data.stream()
                .skip((pageNumber - 1) * pageSize) // 跳过前面的数据项
                .limit(pageSize) // 取出指定数量的数据
                .collect(Collectors.toList()); // 收集数据
        System.out.println("第" + pageNumber + "页的数据:" + pageData);
    }

    public static <T> List<T> getPageData(List<T> data, int pageSize, int pageNumber) {
        int fromIndex = (pageNumber - 1) * pageSize;
        int toIndex = Math.min(fromIndex + pageSize, data.size());

        return data.subList(fromIndex, toIndex);
    }
}
相关推荐
工具派9 分钟前
PDF签名贴上去为什么发虚?尺寸、DPI与坐标的边界实测
java·python·pdf
iCxhust11 分钟前
MATLAB SPWM仿真
开发语言·matlab
谙忆21 分钟前
PNG改成ICO为什么不能用:用Python检查多尺寸目录与256px帧
开发语言·python
萧瑟余晖23 分钟前
Spring Data综合实战与调优详解
java·后端·spring
长空任鸟飞_阿康24 分钟前
如何设计支持 Skills 的 Agent?一套可扩展的四层架构
python·ai·架构·skills
滴啦嘟啦哒27 分钟前
【具身笔记】【原理探究】一、对PI05源码的实践笔记
笔记·python·vla·具身
青峰讲运维31 分钟前
OpenStack 存储深度解析|Cinder 块存储 + Swift 对象存储原理与完整实操(Yoga)
开发语言·openstack·swift
miofly35 分钟前
GitHub 今日推荐|elephant-goldfish-model:先审查设计草案再写代码
python·开源·github
汤姆宝库37 分钟前
具身智能深拆:VLA、世界模型与数据飞轮
开发语言·人工智能·php