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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。