List 集合手动分页

小伙伴们好,欢迎关注,一起学习,无限进步

为方便测试,可以直接在 controller 内添加一个方法,或者直接通过 main 方法测试

List 手动分页:

java 复制代码
@GetMapping("/getUserInfo")
    public Map<String,Object> getUserInfo(@RequestParam("pageNo") Integer pageNo,@RequestParam("pageSize") Integer pageSize){
        if(null == pageNo){
            pageNo = 1;
        }
        if(null == pageSize){
            pageSize = 10;
        }
        List<User> userList = new ArrayList<>();
        userList.add(new User(1,"奥迪1",23,"123@qq.com","地址1"));
        userList.add(new User(2,"奥迪2",23,"124@qq.com","地址2"));
        userList.add(new User(3,"奥迪3",23,"124@qq.com","地址3"));
        userList.add(new User(4,"奥迪4",23,"125@qq.com","地址4"));
        userList.add(new User(5,"奥迪4",23,"126@qq.com","地址5"));
        userList.add(new User(6,"奥迪5",23,"127@qq.com","地址6"));
        userList.add(new User(7,"奥迪6",23,"128@qq.com","地址7"));
        userList.add(new User(8,"奥迪7",23,"129@qq.com","地址8"));
        userList.add(new User(9,"奥迪7",23,"1219@qq.com","地址9"));
        userList.add(new User(10,"奥迪10",23,"1231@qq.com","地址10"));
        userList.add(new User(11,"奥迪11",23,"1232@qq.com","地址11"));

        Integer limit = (pageNo-1)*pageSize;
        Integer totalSize = userList.size();
        // 方法一
        Integer totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
        // 方法二(推荐)其中 pageSize-1 就是 totalSize/pageSize 的最大的余数
        // Integer totalPage = (totalSize + pageSize -1) / pageSize;
        // 方法三
        // Integer totalPage = (int) Math.ceil(totalSize / pageSize);

        if(pageNo > totalPage){
            throw new RuntimeException("页数超出了");
        }
        List<User> subList = null;
        if(pageNo == totalPage){
            // 最后一页
            subList = userList.subList(limit, totalSize);
        }else{
            Integer end= limit + pageSize;
            // 截取的最后的下标
            subList = userList.subList(limit, end);
            // 出现空值处理
            // subList = CollectionUtils.isEmpty(userList) ? new ArrayList<>() : userList.subList(limit, Math.min(userList.size(), end));
        }
        Map<String,Object> map = new HashMap<>();
        map.put("data",subList);
        map.put("total",userList.size());
        subList.forEach(System.out::println);
        return map;
    }
    static class User{
        private Integer id;
        private String name;
        private Integer age;
        private String email;
        private String address;

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public User(Integer id, String name, Integer age, String email, String address) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.email = email;
            this.address = address;
        }

        @Override
        public String toString() {
            return "User{" +
                    "id='" + id + '\'' +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    ", email='" + email + '\'' +
                    ", address='" + address + '\'' +
                    '}';
        }
    }

计算总页数方法

java 复制代码
// totalPage 总页数,pageSize 每页显示多少条,totalSize 总条数
// 方法一
Integer totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
// 方法二(推荐)其中 pageSize-1 就是 totalSize/pageSize 的最大的余数
// Integer totalPage = (totalSize + pageSize -1) / pageSize;
// 方法三
// Integer totalPage = (int) Math.ceil(totalSize / pageSize);
相关推荐
北顾笙9803 分钟前
day38-数据结构力扣
数据结构·算法·leetcode
m0_629494734 分钟前
LeetCode 热题 100-----14.合并区间
数据结构·算法·leetcode
@小码农36 分钟前
2026年3月Scratch图形化编程等级考试一级真题试卷
开发语言·数据结构·c++·算法
_日拱一卒3 小时前
LeetCode:226翻转二叉树
数据结构·算法·leetcode
风筝在晴天搁浅4 小时前
手撕快速排序
数据结构
图码4 小时前
矩阵数据结构入门指南:声明、初始化与基本操作
运维·数据结构·线性代数·算法·矩阵
地球资源数据云4 小时前
1960年-2024年中国棉花产量数据集
大数据·数据结构·数据仓库·人工智能
木木_王6 小时前
嵌入式Linux学习 | 数据结构(Day06)全解:线性表 + 栈队列 + 静态库 / 动态库(原理 + 代码 + 编译实战 + 易错点)
linux·数据结构·笔记·学习
@小码农6 小时前
2026年信息素养大赛【星火征途】图形化编程复赛和决赛模拟题B
开发语言·数据结构·c++·算法
人道领域6 小时前
【LeetCode刷题日记】347.前k个高频元素
java·数据结构·算法·leetcode