Java中list模拟分页
- 工作小总结
- 时间:2019-02-28 09:32
- 2900人已阅读
🔔🔔好消息!好消息!🔔🔔
如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号,代升级ChatGPT4
有需要的朋友👉:微信号
在工作中,有时候,我们使用到集合list,需要对其模拟分页处理。那么这种情况下怎么来处理呢?
首先要明白分页原理:
分页必须的几个参数
数据集:所有符合条件的数据
总数量:所有符合条件的数据总条数
每页数量:每页显示数量
开始数量:开始数量
总页数:总数量/每页数量后得到总页数
说明:
mysql分页是limit关键字。我们来分析下mysql分页之后,就知道list怎么分页了。
假设初始页从pageNo=0开始,每页pageSize=10条数据。
mysql查询limit写法:select * from table limit pageNO*pageSize,(pageNo+1)*pageSize
第一页:带入参数即为:
select * from table limit 0*10,(0+1)*10;
第二页:
select * from table limit 1*10,(2+1)*10;
依次类推。
所以我们使用list模拟分页:
数据集:list
总数量:list.size()
每页数量:pageSize
开始数量:x*pageSize
总页数:list.size()%pageSize==0?list.size()%pageSize:(list.size()%pageSize)+1
在list中我们可以使用sublist(startIndex,endIndex);这个方法截取。
经过上面分析,我们可以得到list分页的代码:
List<CbContract> list = 从数据库查询的数据; log.info("====查询到总数为:{}",list.size()); int subCount = list.size(); if(null != list && !list.isEmpty()){ //循环处理 //获取页码总数 int size=2000; int Pagecount=0; if(list.size()%size!=0){ Pagecount = (list.size()/size)+1; }else{ Pagecount=(list.size()/size); } log.info("模拟分页后,共有:{}",Pagecount); for(int i = 0, len = Pagecount - 1; i <= len; i++){ log.info("开始处理第页数据:{}",i); int fromIndex = i * size; int toIndex = ((i == len) ? subCount : ((i + 1) * size)); log.info("fromIndex:{}","toIndex:{}",fromIndex,toIndex); List<CbContract> subList =new ArrayList<>(); subList = list.subList(fromIndex,toIndex); } }
说明:
数据集:list
总数量:int subCount = list.size();
每页数量:int size=200;
开始数量:int fromIndex = i * size;
总页数:int Pagecount;
每页截取数量参数说明:
每页起始数量:int fromIndex = i * size;
每页结束数量:int toIndex = ((i == len) ? subCount : ((i + 1) * size));
接收截取后的数据:subList = list.subList(fromIndex,toIndex);
上一篇: 初级推广者的结算规则