问题描述
将一个大集合切分成多个小集合,将List拆分很多的小的List的过程,我们称之为分片,当然也可以称为List的分隔,选一个你喜欢的名字就行,你喜欢的就是最好的
解决方案:
在Java中分片的常见实现方法有以下几种:
使用Google的Guava框架实现切片。
- 先在项目的 pom.xml 中添加框架支持,增加以下配置:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
- 有了 Guava 框架之后,只需要使用 Lists.partition方法即可实现分片,如下代码所示:
List<String> tempList = Arrays.asList("水星","金星","地球","火星","木星","土星","冥王星","天王星","海王星");
List<List<String>> partition = Lists.partition(tempList, 4);
System.out.println(partition);
- 结果如下:(拆成如下结果,开发的时候再遍历集合进行应用)
// 结果为:
[[水星, 金星, 地球, 火星], [木星, 土星, 冥王星, 天王星], [海王星]]
使用Apache的commons框架实现切片。
- 先在项目的 pom.xml 中添加框架支持,增加以下配置:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
- 有了 Guava 框架之后,只需要使用 Lists.partition方法即可实现分片,如下代码所示:
List<String> apacheList = Arrays.asList("水星","金星","地球","火星","木星","土星","冥王星","天王星","海王星");
List<List<String>> partition1 = ListUtils.partition(apacheList,4);
System.out.println(partition1);
- 结果如下:(拆成如下结果,开发的时候再遍历集合进行应用)
// 结果为:
[[水星, 金星, 地球, 火星], [木星, 土星, 冥王星, 天王星], [海王星]]
使用Hutool工具类实现切片。
- 先在项目的 pom.xml 中添加框架支持,增加以下配置:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.18</version>
</dependency>
- 有了 Guava 框架之后,只需要使用 Lists.partition方法即可实现分片,如下代码所示:
List<String> hutoolList = Arrays.asList("水星","金星","地球","火星","木星","土星","冥王星","天王星","海王星");
List<List<String>> partition2 = ListUtil.partition(hutoolList,4);
System.out.println(partition2);
- 结果如下:(拆成如下结果,开发的时候再遍历集合进行应用)
// 结果为:
[[水星, 金星, 地球, 火星], [木星, 土星, 冥王星, 天王星], [海王星]]