当前位置: 代码网 > it编程>编程语言>Java > Java中对list集合进行分页的四种方式介绍

Java中对list集合进行分页的四种方式介绍

2025年12月08日 Java 我要评论
这篇文章主要为大家提供了四种在java中对list进行分页处理的方法,包括计算总页数、获取子列表等操作,适用于数据量较大时的显示优化。大家可以根据自己的需要进行选择方式一public static

这篇文章主要为大家提供了四种在java中对list进行分页处理的方法,包括计算总页数、获取子列表等操作,适用于数据量较大时的显示优化。大家可以根据自己的需要进行选择

方式一

public static  void fenye(list list,int pagesize){
    int totalcount=list.size();
    int pagecount=0;
    int m=totalcount%pagesize;
    if  (m>0){
        pagecount=totalcount/pagesize+1;
    }else{
        pagecount=totalcount/pagesize;
    }
    for(int i=1;i<=pagecount;i++){
        if (m==0){
            list<integer> sublist= list.sublist((i-1)*pagesize,pagesize*(i));
            system.out.println(sublist);
        }else{
            if (i==pagecount){
                list<integer> sublist= list.sublist((i-1)*pagesize,totalcount);
                system.out.println(sublist);
            }else{
                list<integer> sublist= list.sublist((i-1)*pagesize,pagesize*(i));
                system.out.println(sublist);
            }
        }
    }
}
list<integer> list=new arraylist<integer>();
for(int i=1;i<52;i++){
    list.add(i);
}
fenye(list,10);

方式二

public <t> list<list<t>> splitlist(list<t> list, int pagesize)
    {
        int listsize = list.size();
        int page = (listsize + (pagesize - 1)) / pagesize;


        list<list<t>> listarray = new arraylist<list<t>>();
        for (int i = 0; i < page; i++)
        {
            list<t> sublist = new arraylist<t>();
            for (int j = 0; j < listsize; j++)
            {
                int pageindex = ((j + 1) + (pagesize - 1)) / pagesize;
                if (pageindex == (i + 1))
                {
                    sublist.add(list.get(j));
                }
                if ((j + 1) == ((j + 1) * pagesize))
                {
                    break;
                }
            }
            listarray.add(sublist);
        }
        return listarray;
    }

方式三

public searchresult paging(list<t> list, int pagenumber, int pagesize) throws exception{
        list<t> pagelist = new arraylist<t>();
        int curridx = (pagenumber > 1 ? (pagenumber -1) * pagesize : 0);
        for (int i = 0; i < pagesize && i < list.size() - curridx; i++){
            t listnew = list.get(curridx + i);
            pagelist.add(listnew);
        }
        searchresult<t> searchresult = new searchresult<t>();
        searchresult.setlist(pagelist);
        searchresult.settotal(list.size());
        if (searchresult.gettotal()%pagesize == 0){
            searchresult.setpages((int)searchresult.gettotal()/pagesize);
        }else {
            searchresult.setpages((int)searchresult.gettotal()/pagesize + 1);
        }
        searchresult.setpagenum(pagenumber);
        searchresult.setpagesize(pagesize);
        searchresult.setsize(pagelist.size());
        //是否是第一页
        if (pagenumber == 1){
            searchresult.setisfirstpage(true);
        }else {
            searchresult.setisfirstpage(false);
        }
        //是否是最后一页
        if ((searchresult.gettotal() - pagenumber*pagesize) > 0){
            searchresult.setislastpage(false);
        }else {
            searchresult.setislastpage(true);
        }
        return searchresult;
    }

方式四

list<integer> list = new arraylist<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        
        int page = 2;//相当于pageno-------分页中的pi
        int count = 20;//相当于pagesize-------分页中的ps
        int size = list.size();
        int pagecount=size/count;
        int fromindex = count * (page - 1);
        int toindex = fromindex + count;
        if (toindex >= size) {
            toindex = size;
        }
        if(page>pagecount+1){
            fromindex=0;
            toindex=0;
        }
        
        system.out.println(list.sublist(fromindex, toindex));

例子

rckqmonthlylist为一个list
        if (rckqmonthlylist.size() <= 0) {
            map.put("totalpage", 1);
            map.put("pageindex", 1);
            map.put("pagesize", query.getps());
            map.put("totalrow", 0);
            map.put("hasnext", false);
            map.put("list", rckqmonthlylist);
            return new apiresult().success(map);
        }
        //有数据时
        //计算总页数
        integer totalpage = rckqmonthlylist.size() / query.getps();
//        if (rckqmonthlylist.size() % query.getps() > 0) {
//           totalpage++;
//        }
        int fromindex = query.getps() * (query.getpi() - 1);
        int toindex = fromindex + query.getps();
        if (toindex >= rckqmonthlylist.size()) {
            toindex = rckqmonthlylist.size();
        }
        if(query.getpi()>totalpage+1){
            fromindex=0;
            toindex=0;
        }
        boolean hasnext = query.getpi() != totalpage;
        map.put("totalpage", totalpage);
        map.put("pageindex", query.getpi());
        map.put("pagesize", query.getps());
        map.put("totalrow", rckqmonthlylist.size());
        map.put("hasnext", hasnext);
        map.put("list", rckqmonthlylist.sublist(fromindex,toindex));
        return new apiresult().success(map);

到此这篇关于java中对list集合进行分页的四种方式介绍的文章就介绍到这了,更多相关java list分页内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com