对List进行分割的几种方式

Java中List按指定长度分割成多个List 项目背景:我们一个APP需要对6万余人同时推送消息,但是极光推送能力每次只有500,所以我们需要将一个包含6万多元素的List按500的长度为一组分割成多个List。 代码: //list按指定长度分割方法 private List<List<PushMessageExcel>> splitList(List<PushMessageExcel> messages... 阅读详情
AI摘要

本文介绍了在Java中如何分割List,包括使用Google Guava的Lists.partition、Java 8的Stream API以及Apache Commons Collection的ListUtils.partition方法。此外,还提供了一个手动实现将List等分的示例代码,供开发者根据需求选择合适的方式。

1、使用google guava对List进行分割

需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖,如果不介意可以使用。

//假设查询出很多用户信息
List<User> users = userService.findAll();
//按每100个一组分割
List<List<User>> parts = Lists.partition(users, 100);
parts.stream().forEach(list -> {
    process(list);
});

2、java8 Stream

使用jdk的方法,但是需要学习成本,可以学习使用,同样简单方便。

	  //方法一:使用流遍历操作
      List<List<Integer>> mglist = new ArrayList<>();
      Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {
          mglist.add(list.stream().skip(i * MAX_SEND).limit(MAX_SEND).collect(Collectors.toList()));
      });

     //方法二:获取分割后的集合
      List<List<Integer>> splitList = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().skip(a * MAX_SEND).limit(MAX_SEND).parallel().collect(Collectors.toList())).collect(Collectors.toList());
      
    

需要设置MAX_SEND和limit数值

//按每3个一组分割
private static final Integer MAX_SEND = 3;
//计算切分次数
int limit = (list.size() + MAX_SEND - 1) / MAX_SEND;

3、使用apache common collection

最简单方便的方式

List<User> users = userService.findAll();
List<List<User>> subs = ListUtils.partition(users , 3);

4、java 手写将一个List等分成n个list

不建议使用,难度较大而且可能有潜在问题。
参考自 网络:

public static <T> List<List<T>> averageAssign(List<T> source, int n) {
    List<List<T>> result = new ArrayList<>();
    int remainder = source.size() % n;  //(先计算出余数)
    int number = source.size() / n;  //然后是商
    int offset = 0;//偏移量
    for (int i = 0; i < n; i++) {
        List<T> value;
        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);
        }
        result.add(value);
    }
    return result;
}
python--列表list切分(超详细) Python的列表切片和切分功能提供了灵活而强大的工具,用于处理和操作列表数据。从基本的切片操作到高级的分割技巧,再到实际应用场景,我们可以看到列表切分在数据处理中的广泛应用。列表(List)是Python中最常用的数据结构之一,经常需要对列表进行切分操作,以实现数据的分割、组合等功能。Python中的列表切片(Slicing)是一种强大的工具,用于从列表中提取子列表。除了基本的切片操作,还有一些更高级的切分技巧,可以满足更复杂的数据处理需求。列表切分在数据处理和分析中非常常见,以下是一些实际应用场景。 阅读详情

相关推荐

节卡Jaka Zu APP编程避坑指南:从频繁通讯错误到稳定Socket交互的调试心得

本文详细解析了节卡Jaka Zu APP编程中常见的通讯错误问题,并提供了从基础排查到高级调试的完整解决方案。通过优化网络配置、固件匹配、心跳机制和数据交互规范,开发者可实现稳定的Socket通讯,有效提升工业机器人操控的可靠性。文章特别针对v1.6.7.3版本的典型问题给出了实用调试技巧。

weixin_42639633的博客 320

将list分成多个list集合

1:按指定大小,分隔集合,将集合按规定个数分为n个部分 /** * 将集合按len数量分成若干个list * @param list * @param len 每个集合的数量 * @return */ public static List<List<TotalorderDO>> splitList(List<TotalorderDO> list, int len) { if (list == nul

Jiangbohao_的博客 1万+

Mac上安装虚拟机搭载window系统

用Mac的都知道,很多window用的软件是Mac版本没有的。平时有的还得要求去用那些软件,有几种方式可供大家选择: 1.再买个window本; 2.装双系统; 3.装虚拟机,搭载window系统。 我比较推荐第3条,这样可以在Mac本上做到双开,一边开着mac一边开着window,还能做到同时处理文件,不至于重新启动操作系统,下边是具体实现步骤,其中有几个需要下载的,建议在网速好的时候完...

Coder_Mumu的博客 1万+

以指定容量分割List的几种方法

以指定容量分割List的几种方法(常用于在数据库中碰到 in的情况)【in最大容量为1000】

开始的博客 3953

YOLOv5 自定义模型 Android 部署完整指南

本文详细介绍了将YOLOv5模型部署到Android设备的完整流程,包含三个核心部分:首先验证官方模型测试,确保基础环境配置正确;随后进行模型转换,从PyTorch导出ONNX格式并优化,再转换为NCNN格式;最后在Android项目中集成自定义模型,包括文件替换、参数修改和代码适配。教程基于YOLOv5 6.1版本,使用NCNN框架进行移动端推理,涵盖了常见问题解决方案和关键配置要点,为开发者提供了从训练到部署的完整技术路线。

FJN110的博客 591

基于FPGA的多级CIC滤波器实现四倍插值

基于FPGA的多级CIC滤波器实现四倍插值 原文链接:基于FPGA的多级CIC滤波器实现四倍插值 在《基于FPGA的多级CIC滤波器实现四倍抽取一》和《基于FPGA的多级CIC滤波器实现四倍抽取二》中我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理以及它们的幅频响应。此篇我们将用verilog实现基于FPGA的多级CIC滤波器实现四倍插值。 1 CIC滤波器的基本概述 CIC(积分梳状...

baidu_34971492的博客 3140

Java 中 List 分片的 5 种方法

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

2301_82243396的博客 6388

piamon实战-- 如何使用 Paimon 的 Java API 实现数据的点查

点查(Point Lookup)是指通过 ​​唯一键(Primary Key)​​ 快速定位并返回单条或少量数据的查询模式。例如:根据用户 ID 查询用户信息、根据订单号查询订单详情等。点查的核心诉求是 ​​低延迟​​ 和 ​​高吞吐​​,适用于实时风控、在线分析等场景。​​定义主键表结构​​,优化数据分布。​​构建过滤条件​​,使用指定查询键。​​执行查询并处理结果​​,结合流式更新实现实时查询。

阿华田的博客 530

字符串分割成List的几种方式

在Java开发中,我们经常需要将字符串转换为List类型,以便进行后续处理。下面介绍几种常见的字符串转List的方式,并给出相应的使用教程。

GSIBin 6989

黑猫带你学UFS协议第12篇:UFS标志(Flags)和属性(Atrributes)详解

UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。 简单来说,flag和attribute、discriptor一样,都是ufs的寄存器罢了。只不过spec将这些寄存器分类了,分成这三种大的类型了而已。 标志可以被清除、复位、设置、触发、读。 主机也是通过设备管理器的Query Request UPIU来读取或者写标志。

黑猫奥利奥的博客 2083

Allegro如何输出ODB文件操作指导

在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图。用Allegro如何输出ODB文件,具体操作如下。如何输出ODB文件操作指导。

weixin_54787054的博客 7203

java 按照固定大小分割 list 集合的几种方式

1、构建一个lis集合类 private static List<Integer> lists = new ArrayList<Integer>(); @Before public void test0() { for (int i = 0; i <= 101; i++) { lists.add(i...

向晚歌 340

Ansible 面板工具之AWK ( Anssible Tower )界面介绍

整理这部分笔记博文内容为AWX和UI 界面的简单介绍理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波这里AWX使用的是最新的版本AWX 21.7.0目前最新版是3.8.6,博客中的版本为3.5.0对于Redhat的,官网上看到在 2022 年 11 月之后不在维护了,改版之后现在叫,感兴趣小伙伴可以了解下虽然有AWX是。

山河已无恙 1303

list 分批_介绍几种List集合分批操作的工具

开发中有需要分批获取list集合中的元素,现在查询有如下几种实现方法:创建集合List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);//计算页数int limit = (list.size() + MAX_NUMBER - 1) / MAX_NUMBER;使用流对list进行分割/* ----------------------使用流对li...

weixin_39996750的博客 100

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

2015.1.10前

1.list遍历 List listroom = workOrderService.findRoom(params);    for (int i = 0; i &lt; listroom.size(); i++) {     Object[] row = (Object[]) listroom.get(i);     Integer roomid = (Integer) row[0];  ...

疯狂小小菜鸟 108

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

List的拆分的几种方式

开发中我们可能会遇到一个大的集合,然后我们需要对集合进行拆分,然后再对拆分的集合进行相关的操作。有的小伙伴可能会说,为什么要给出三种的,给出一种切片方法不就可以了,因为列举每一种方法都需要引入对应的jar包,所以自己按需引用,如果你的项目中已经引用了对应的jar就参考其中的一个例子写就行了。将List拆分很多的小的List的过程,我们称之为分片,当然也可以称为List的分隔,选一个你喜欢的名字就行,你喜欢的就是最好的(这怎么像渣男语录啊,一定要擦亮眼睛,不要让别人画大饼)。

2301_78287784的博客 4011

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

list的分批处理实现的几种方式

文章目录1、使用Sublist实现list的分批处理2、使用stream流实现list的分批处理3、使用Sublist实现list的分批处理4、使用Sublist实现list的分批处理5、使用Sublist实现list的分批处理6、使用Sublist实现list的分批处理 在项目中,我们经常会遇到list集合数据量过大,考虑到处理性能,需要对这个list集合进行分批处理的情况; 以下是自己参考和整理list的分批处理的几种常用处理方法: 1、使用Sublist实现list的分批处理 2、使用stream流

quader的博客 1万+

Android 实现分割线的几种方式

最近项目的UI除了图标是美工做的,其他的都要自己代码实现。所以导致最近创建的drawable资源(selector、layer-list、shape等等)文件特别多。 在这里总结几种实现分割线的方式: 1、使用layer-list实现: (1)顶部黑色分割线、白色背景 (2)左边上边右边黑色分割线、白色背景 layer-list使用总结:没

I_can_move_you的专栏 1万+

List与String相互转化的几种方式

List与String相互转化的几种方式归纳

专注Java后端技术干货、项目源码总结分享,期待您的关注。 1万+

java-List集合初始化的几种方式与一些常用操作-持续更新

集合初始化 获取list集合中的最大最小值 list排序 treeMap 中(基于key的排序) TreeMap的按value排序 去掉一个list中包含的另一个list数据 String数组转换成List list对象转对象某属性的list

瑶山的博客 3万+

java list分批_介绍几种List集合分批操作的工具

开发中有需要分批获取list集合中的元素,现在查询有如下几种实现方法:创建集合List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);//计算页数int limit = (list.size() + MAX_NUMBER - 1) / MAX_NUMBER;使用流对list进行分割/* ----------------------使用流对li...

weixin_42109598的博客 1396

【100个 Unity实用技能】☀️ | C# 中 Sort() 对List中的数据排序的几种方法 整理总结

首先声明一个自定义类型} }声明一个自定义类型的ListstudentList . Add(new Student("小Y" , 20));studentList . Add(new Student("小小Y" , 10));//会报错此时直接使用studentList.sort()是报错的:ArgumentException:至少一个对象必须实现IComparable。下面就来介绍几种可以自定义类型排序的几种方法1. 继承接口IComparable

努力前行,总会成为自己心中的那道光 4万+

List遍历和Map遍历的几种方式

List、Map遍历的几种方式

qq_46144673的博客 254

python中list[1啥意思_详解Python中list[::-1]的几种用法

本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下:s = "abcde"list的[]中有三个参数,用冒号分割list[param1:param2:param3]param1,相当于start_index,可以为空,默认是0param2,相当于end_index,可以为空,默认是list.sizeparam3,步长,默认为1。步长为-1时,返回倒序原序列举例说明pa...

weixin_29571873的博客 6540
上一篇: java获取一天的起止时间
下一篇: Mybatis-Plus 3.2.0与3.4.0的坑
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值