Java中list模拟分页

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2019-02-28 09:32
  • 2900人已阅读
简介 在工作中,有时候,我们使用到集合list,需要对其模拟分页处理。那么这种情况下怎么来处理呢?首先要明白分页原理:分页必须的几个参数数据集:所有符合条件的数据总数量:所有符合条件的数据总条数每页数量:每页显示数量开始数量:开始数量总页数:总数量/每页数量后得到总页数说明:mysql分页是limit关键字。我们来分析下mysql分页之后,就知道list怎么分页了。假设初始页从pageNo=0开始,每页

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

在工作中,有时候,我们使用到集合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分页的代码:

57728392d33f07cea8f03dc73e0e4fef.png

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);

TopTop