将List切割为多个指定长度的多个List

参考:

手写1

java 复制代码
private List<List<String>> splitList(List<String> list, int listSize){
	 if (null === list || 0 === listSize) {
		return new ArrayList();
	 }
     int length = list.size();
     int num = ( length + listSize- 1 )/listSize; 
     List<List<String>> newList = new ArrayList<>(num);
     for (int i = 0; i < num; i++) {
         int fromIndex = i * listSize;
         int toIndex = (i+1) * listSize< length ? ( i+1 ) * listSize: length ;
         newList.add(list.subList(fromIndex, toIndex)) ;
     }
     return  newList ;
 }

手写2

java 复制代码
    public static <T> List<List<T>> splitList(List<T> list, int splitSize) {
        List<List<T>> subLists = new ArrayList<>();
    
        for (int i = 0; i < list.size(); i += splitSize) {
            int end = Math.min(i + splitSize, list.size());
            subLists.add(list.subList(i, end));
        }
    
        return subLists;
    }

手写3

java 复制代码
    public static <T> List<List<T>> splitList(List<T> list, int splitSize) {
        return IntStream.range(0, (list.size() + splitSize - 1) / splitSize)
                .mapToObj(i -> list.subList(i * splitSize, Math.min((i + 1) * splitSize, list.size())))
                .collect(Collectors.toList());
    }

Guava

xml 复制代码
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>12.0.1</version>
    </dependency>
java 复制代码
Lists.partition(list, listSize)

apache的collections4

xml 复制代码
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.4</version>
    </dependency>
java 复制代码
ListUtils.partition(OLD_LIST, 3);

hutool

xml 复制代码
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.7.14</version>
    </dependency>
java 复制代码
ListUtil.partition(OLD_LIST, 3);
相关推荐
bagadesu33 分钟前
使用Docker构建Node.js应用的详细指南
java·后端
没有bug.的程序员33 分钟前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
洛_尘2 小时前
JAVA EE初阶 2: 多线程-初阶
java·开发语言
Slow菜鸟2 小时前
Java 开发环境安装指南(五) | Git 安装
java·git
hnjzsyjyj3 小时前
洛谷 P12141:[蓝桥杯 2025 省 A] 红黑树
数据结构·蓝桥杯·二叉树
fei_sun3 小时前
【总结】数据结构---排序
数据结构
lkbhua莱克瓦243 小时前
Java基础——方法
java·开发语言·笔记·github·学习方法
q***71853 小时前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
_Jimmy_3 小时前
JUC包里的同步组件主要实现了AQS的哪些主要方法
java
范纹杉想快点毕业4 小时前
《嵌入式开发硬核指南:91问一次讲透底层到架构》
java·开发语言·数据库·单片机·嵌入式硬件·mongodb