欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 对ArrayList进行分页实例代码

程序员文章站 2024-03-06 12:36:31
java 对arraylist进行分页 概述 系统与系统之间的交互,通常是使用接口的形式。假设b系统提供了一个批量的查询接口,限制每次只能查询50条数据,而我们实际需要...

java 对arraylist进行分页

概述

系统与系统之间的交互,通常是使用接口的形式。假设b系统提供了一个批量的查询接口,限制每次只能查询50条数据,而我们实际需要查询500条数据,这个时候可以对这500条数据做分批操作,分10次调用b系统的批量接口。

如果b系统的查询接口是使用list作为入参,那么要实现分批调用的话,可以利用arraylist的sublist方法来处理。

代码

sublist方法的定义:

  list<e> sublist(int fromindex, int toindex);

只需要准确的算出fromindex和 toindex即可。

数据准备

public class testarraylist {

  public static void main(string[] args) {
    list<long> datas = arrays.aslist(new long [] {1l,2l,3l,4l,5l,6l,7l});
  }
}

分页算法

import java.util.arrays;
import java.util.list;

public class testarraylist {

  private static final integer page_size = 3;
  public static void main(string[] args) {
    list<long> datas = arrays.aslist(new long [] {1l,2l,3l,4l,5l,6l,7l,8l});

    //总记录数
    integer totalcount = datas.size();

    //分多少次处理
    integer requestcount = totalcount / page_size;

    for (int i = 0; i <= requestcount; i++) {
      integer fromindex = i * page_size;
      //如果总数少于page_size,为了防止数组越界,toindex直接使用totalcount即可
      int toindex = math.min(totalcount, (i + 1) * page_size);
      list<long> sublist = datas.sublist(fromindex, toindex);
      system.out.println(sublist);
      //总数不到一页或者刚好等于一页的时候,只需要处理一次就可以退出for循环了
      if (toindex == totalcount) {
        break;
      }
    }

  }
}

测试场景

1、总数不足一页
2、总数刚好等于一页
3、总数多余一页

上面三个case都可以正常通过。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!