java中将List数据平均切分成N份

话不多说,直接上代码,直接用

java 复制代码
  public static <T> List<List<T>> averageList(List<T> source, int n) {
    List<List<T>> ret = new ArrayList<List<T>>();
    int number = source.size() / n;
    int remainder = source.size() % n; // 取余
    int offset = 0;//偏移量
    for (int i = 0; i < n; i++) {
      System.out.println("i:"+i);
      List<T> value = null;
      if (remainder > 0) {
        value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
        remainder--;
        offset++;
      } else {
        value = source.subList(i * number + offset, (i + 1) * number + offset);
      }
      ret.add(value);
    }
    return ret;
  }

如果想要再去除这里面存在的多余的空list,就加这行代码:

java 复制代码
  public static <T> List<List<T>> removeEmptyList(List<T> source, int n){
    List<List<T>> lists = averageList(source, n);
    return lists.stream().filter(i -> i.size() != 0).collect(Collectors.toList());
  }
相关推荐
Java后端的Ai之路8 分钟前
【 Java】-网络协议核心知识问答(比较全)
java·开发语言·网络协议
我真的想 啸5 小时前
在 Ubuntu 24.04 系统上安装并使用 Codex CLI
linux·ubuntu·arcgis
小道仙977 小时前
jenkins对接、jenkins-rest
java·servlet·jenkins·jenkins-rest
莫寒清8 小时前
MinIO
java
嵌入小生0078 小时前
线程(2)/ 线程属性 /相关函数接口--- 嵌入式(Linux)
linux·嵌入式·线程·软件编程·僵尸线程·马年开工第一学·线程属性
No8g攻城狮9 小时前
【Linux】Linux nano 编辑器全攻略:从入门到精通
linux·运维·编辑器·nano
zl_dfq9 小时前
Linux 之 【网络套接字编程】(固定宽度整数类型、socket常见API、netstat)
linux·网络
Java后端的Ai之路10 小时前
【JDK】-JDK 21 新特性内容
java·开发语言·后端·jdk·jdk21
huaweichenai11 小时前
Linux安装http-server并部署html静态站点
linux·运维·服务器
Gss77711 小时前
Linux 正则表达式详解(基础 + 扩展 + 实操)
linux·运维·正则表达式