• List集合分页处理的方法


    原文链接:https://blog.csdn.net/mei3983646/article/details/82983230    (侵删)

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

        /**
    
         * 循环截取某页列表进行分页
    
         * @param dataList 分页数据
    
         * @param pageSize  页面大小
    
         * @param currentPage   当前页面
    
         */
    
        public static List<String> page(List<String> dataList, int pageSize,int currentPage) {
    
            List<String> currentPageList = new ArrayList<>();
    
            if (dataList != null && dataList.size() > 0) {
    
                int currIdx = (currentPage > 1 ? (currentPage - 1) * pageSize : 0);
    
                for (int i = 0; i < pageSize && i < dataList.size() - currIdx; i++) {
    
                    String data = dataList.get(currIdx + i);
    
                    currentPageList.add(data);
    
                }
    
            }
    
            return currentPageList;
    
        }

    第二种是利用List中的sublist方法进行分页:

    List<E> subList(int fromIndex, int toIndex);

    它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的。返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List)。
    比如集合中的内容为1,2,3,4,5
     list.sublist(2,4)
    就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的
    就是说是从大于等于2到小于4
    那子集内容就是3,4(集合的下标都是从0开始);

        /**
    
         * 利用subList方法进行分页
    
         * @param list 分页数据
    
         * @param pagesize  页面大小
    
         * @param currentPage   当前页面
    
         */
    
        public static List<String> pageBySubList(List list, int pagesize, int currentPage) {
    
            int totalcount = list.size();
    
            int pagecount = 0;
    
            List<String> subList;
    
            int m = totalcount % pagesize;
    
            if (m > 0) {
    
                pagecount = totalcount / pagesize + 1;
    
            } else {
    
                pagecount = totalcount / pagesize;
    
            }
    
            if (m == 0) {
    
                subList = list.subList((currentPage - 1) * pagesize, pagesize * (currentPage));
    
            } else {
    
                if (currentPage == pagecount) {
    
                    subList = list.subList((currentPage - 1) * pagesize, totalcount);
    
                } else {
    
                    subList = list.subList((currentPage - 1) * pagesize, pagesize * (currentPage));
    
                }
    
            }
    
            return subList;
    
        }

    测试结果:

        public static void main(String[] args) {
    
     
    
            List<String> list = new ArrayList<>();
    
            for (int i = 1; i <= 50; i++) {
    
                list.add(String.valueOf(i));
    
            }
    
     
    
            List<String> curList = page(list,6,2);
    
            List<String> subList = pageBySubList(list,6,2);
    
     
    
            System.out.println("page:"+curList);
    
            System.out.println("pageBySubList:" + subList);
    
     
    
        }

    运行结果:

    page:[7, 8, 9, 10, 11, 12]
    pageBySubList:[7, 8, 9, 10, 11, 12]

  • 相关阅读:
    Windows 窗体设计器中的设计时错误
    union all 里面的order by
    docx转doc时,防止公式被转成图片的解决办法
    学习方向推荐
    关于验收测试的几个困惑
    《实例化需求》读书笔记
    VS2010中使用 SpecFlow + Selenium.WebDriver
    敏捷团队成员应具备的素质
    Jolt Awards: The Best Books
    在Ajax.ActionLink的OnBegin,onComplete等事件中使用this【解决办法】
  • 原文地址:https://www.cnblogs.com/cmz-32000/p/12186362.html
Copyright © 2020-2023  润新知