java对list集合进行分页的写法
假设有一个list数组,因为总数过大,在进行查询或者调用外部接口时,需要对其进行分页处理,可以用以下几种方式进行处理
eq:
list<string> biglist=lists.newarraylist("a","b","c","d","e","f","g","h");
1. sublist分页【java.util.list.sublist(int fromindex,int toindex)】
int pagesize=3;//每页大小 int count=biglist.size();//总list int totalpage=(int)((count/pagesize)+(count % pagesize >0?1:0));//总页数 for(int i=1;i<=totalpage;i++){ list<string> smalllist=biglist.sublist(pagesize*(i-1),math.min(pagesize*i,count));//截取对应范围数据 system.out.println(smalllist.tostring()); }
2. partition分页【com.google.com.collect.lists.partition(list list,int size) 】
int pagesize=3;//每页大小 list<list<string>> partitionlist=lists.partition(biglist,pagesize);//进行分页 for(list<string> smalllist:partitionlist){ system.out.println(smalllist.tostring()); }
3. java8 stream流 分页
int pagesize=3;//每页大小 int count=biglist.size();//总list int totalpage=(int)((count/pagesize)+(count % pagesize >0?1:0));//总页数 // 使用 stream 实现分页 for(int i=1;i<=totalpage;i++){ list<string> smalllist= biglist.stream() .skip(pagesize*(i-1)) // 跳过前 pagesize*(i-1) 个元素 .limit(pagesize) // 限制结果数量为 pagesize .collect(collectors.tolist()); //结果为列表 system.out.println(smalllist.tostring()); }
4. hutool工具类提供的方法listutil.split(list list,int size)
实际内部实现还是sublist分页
int pagesize=3;//每页大小 list<list<string>> splitlist=listutil.split(biglist,pagesize);//biglist 需处理的列表,pagesize分页长度 for(list<string> smalllist:splitlist){ system.out.println(smalllist.tostring()); }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论