java 对ArrayList进行分页实例代码
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都可以正常通过。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
SpringBoot中@RequestBody的伪表单提交场景
@RequestBody是Spring MVC/Spring Boot中用于处理HTTP请求体数据的核心注解,主要用于将JSON/XML格式的请求体数据自动绑定到方法参数对象上, 下面就来介绍一下如何使用2025-12-12
Java将网络图片转成输入流以及将url转成InputStream问题
这篇文章主要介绍了Java将网络图片转成输入流以及将url转成InputStream问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
Mybatis核心配置文件、默认类型别名、Mybatis获取参数值的两种方式(实例代码)
这篇文章主要介绍了Mybatis核心配置文件、默认类型别名、Mybatis获取参数值的两种方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-03-03
Spring3.1.1+MyBatis3.1.1的增、删、查、改以及分页和事务管理
这篇文章主要介绍了Spring3.1.1+MyBatis3.1.1的增、删、查、改以及分页和事务管理的相关资料,需要的朋友可以参考下2016-01-01
Spring Data JPA自动生成表时列顺序混乱的最新解决办法
文章主要介绍了Spring Boot 3.3.5版本中SpringDataJPA自动生成表时列顺序混乱的问题,以及如何通过替换Hibernate实现来解决这个问题,感兴趣的朋友跟随小编一起看看吧2024-11-11


最新评论