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

参考:

手写1

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

    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

    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

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>12.0.1</version>
    </dependency>
Lists.partition(list, listSize)

apache的collections4

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.4</version>
    </dependency>
ListUtils.partition(OLD_LIST, 3);

hutool

    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.7.14</version>
    </dependency>
ListUtil.partition(OLD_LIST, 3);

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 02:38:03       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 02:38:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 02:38:03       43 阅读
  4. Python语言-面向对象

    2024-07-10 02:38:03       54 阅读

热门阅读

  1. 基于 LSN 的 PostgreSQL 数据管理与恢复

    2024-07-10 02:38:03       22 阅读
  2. 加密货币安全升级:USDT地址监控机器人

    2024-07-10 02:38:03       20 阅读
  3. bind方法的使用

    2024-07-10 02:38:03       15 阅读
  4. 128陷阱详解

    2024-07-10 02:38:03       15 阅读
  5. 前端如何控制并发请求

    2024-07-10 02:38:03       15 阅读
  6. ubuntu虚拟机安装

    2024-07-10 02:38:03       20 阅读
  7. RabbitMQ安装使用遇到的问题

    2024-07-10 02:38:03       18 阅读
  8. ShardingSphere

    2024-07-10 02:38:03       20 阅读
  9. Docker启动安装nacos

    2024-07-10 02:38:03       20 阅读
  10. 设置Nginx响应超时配置

    2024-07-10 02:38:03       25 阅读