List 切割成小 list 分批处理数据
使用 Google Guava 库中的方法对 bmList 进行分割。
Lists.partition() 方法用于将一个列表按指定大小进行分割,返回一个包含分割后子列表的新列表。
在这个例子中,bmList 是一个 List<AccountRelationDO> 类型的列表,50 是指定的分割大小。
这行代码的作用是将 bmList 列表按照每个子列表包含最多 50 个元素进行分割,然后将分割后的子列表存储在 partition 变量中,即 List<List<AccountRelationDO>> 类型的列表。
通过这个操作,可以将一个较大的列表分割成多个更小的子列表,以便后续对每个子列表进行处理或批量操作。
List<AccountRelationDO> bmList; List<List<AccountRelationDO>> partition = Lists.partition(bmList, 50); for (List<AccountRelationDO> bms : partition) { // 业务处理 }
使用 Java 8 的 Stream API 也可以对列表进行切割
通过使用Stream.limit()和Stream.skip()方法来实现。
IntStream.range()方法生成了一个从 0 到 (bmList.size() + batchSize - 1) / batchSize 的整数范围。然后,通过调用mapToObj()方法将每个整数映射为一个子列表,使用subList()方法对原始列表进行分割,从而得到每个子列表。
最后,使用collect()方法将所有子列表收集到一个新的列表中,存储在 partition 变量中。
这样,就可以使用 Java 8 的 Stream API 在代码中实现对列表的切割操作,并得到包含分割后子列表的列表。
List<AccountRelationDO> bmList; int batchSize = 50; List<List<AccountRelationDO>> partition = IntStream.range(0, (bmList.size() + batchSize - 1) / batchSize) .mapToObj(i -> bmList.subList(i * batchSize, Math.min((i + 1) * batchSize, bmList.size()))) .collect(Collectors.toList());
作者:天下没有收费的bug
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号