zoukankan      html  css  js  c++  java
  • Java处理List集合数据进行分页展示

    第一种方法是用封装好的PageInfo封装数据,返回的结果已经把总个数,每页数据,当前页,每页个数都封装好了(推荐使用):

    需要在POM文件导入依赖

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.0.1</version>
    </dependency>
      /**
         * 处理List集合数据进行分页
         *
         * @param currentPage 当前页
         * @param pageSize    每页数据个数
         * @param list        进行分页的数据
         * @param <T>
         * @return
         */
        public static <T> PageInfo<T> queryPageInfo(int currentPage, int pageSize, List<T> list) {
            int total = list.size();
            if (total > pageSize) {
                int toIndex = pageSize * currentPage;
                if (toIndex > total) {
                    toIndex = total;
                }
                list = list.subList(pageSize * (currentPage - 1), toIndex);
            }
            Page<T> page = new Page<>(currentPage, pageSize);
            page.addAll(list);
            page.setPages((total + pageSize - 1) / pageSize);
            page.setTotal(total);
    
            PageInfo<T> pageInfo = new PageInfo<>(page);
            return pageInfo;
        }

    第二种方法是循环截取某个页面的数据:

      /**
         * 处理List集合数据进行分页
         *
         * @param currentPage 当前页
         * @param pageSize    每页数据个数
         * @param list        进行分页的数据
         * @param <T>
         * @return
         */
        public static <T> List<T> getPageInfo(int currentPage, int pageSize, List<T> list) {
            List<T> newList = new ArrayList<>();
            if (list != null && list.size() > 0) {
                int currIdx = (currentPage > 1 ? (currentPage - 1) * pageSize : 0);
                for (int i = 0; i < pageSize && i < list.size() - currIdx; i++) {
                    newList.add(list.get(currIdx + i));
                }
            }
            return newList;
        }

    完整测试类代码:

    import java.util.ArrayList;
    import java.util.List;
    
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageInfo;
    
    public class TestListPage {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                list.add(i + 1 + "");
            }
            int currentPage = 1;
            int pageSize = 3;
            List<String> pageInfo = getPageInfo(currentPage, pageSize, list);
            System.out.println("总条数:" + list.size());
            System.out.print("数据:");
            pageInfo.forEach(e -> System.out.print(e));
            System.out.println();
            System.out.println("当前页:" + currentPage);
            System.out.println("每页个数:" + pageSize);
            System.out.println("总页数:" + ((list.size() / pageSize) + 1));
            System.out.println("===========================");
    
            PageInfo<String> queryPageInfo = queryPageInfo(currentPage, pageSize, list);
            System.out.println("总条数:" + queryPageInfo.getTotal());
            System.out.print("数据:");
            queryPageInfo.getList().forEach(e -> System.out.print(e));
            System.out.println();
            System.out.println("当前页:" + queryPageInfo.getPageNum());
            System.out.println("每页个数:" + queryPageInfo.getPageSize());
            System.out.println("总页数:" + queryPageInfo.getPages());
        }
    
        /**
         * 处理List集合数据进行分页
         *
         * @param currentPage 当前页
         * @param pageSize    每页数据个数
         * @param list        进行分页的数据
         * @param <T>
         * @return
         */
        public static <T> List<T> getPageInfo(int currentPage, int pageSize, List<T> list) {
            List<T> newList = new ArrayList<>();
            if (list != null && list.size() > 0) {
                int currIdx = (currentPage > 1 ? (currentPage - 1) * pageSize : 0);
                for (int i = 0; i < pageSize && i < list.size() - currIdx; i++) {
                    newList.add(list.get(currIdx + i));
                }
            }
            return newList;
        }
    
        /**
         * 处理List集合数据进行分页
         *
         * @param currentPage 当前页
         * @param pageSize    每页数据个数
         * @param list        进行分页的数据
         * @param <T>
         * @return
         */
        public static <T> PageInfo<T> queryPageInfo(int currentPage, int pageSize, List<T> list) {
            int total = list.size();
            if (total > pageSize) {
                int toIndex = pageSize * currentPage;
                if (toIndex > total) {
                    toIndex = total;
                }
                list = list.subList(pageSize * (currentPage - 1), toIndex);
            }
            Page<T> page = new Page<>(currentPage, pageSize);
            page.addAll(list);
            page.setPages((total + pageSize - 1) / pageSize);
            page.setTotal(total);
    
            PageInfo<T> pageInfo = new PageInfo<>(page);
            return pageInfo;
        }
    
    }

    测试结果展示:

  • 相关阅读:
    微信授权登录
    mpvue 试水的一天
    小程序请求接口统一封装到一个js文件中
    工作中vue项目前后端分离,调用后端本地接口出现跨域问题的完美解决
    百度小程序授权更好体验
    关于智能小程序网络请求封装
    vue 开发webapp 手机返回键 退出问题
    MySQL解决存入数据库和取出数据库时间格式问题
    关于小程序授权更好体验
    关于vue项目中在js中引入图片问题
  • 原文地址:https://www.cnblogs.com/liyhbk/p/15103718.html
Copyright © 2011-2022 走看看