简介:介绍在Java中将一个大的列表拆分为多个较小的列表的常用方法。
在Java中,可以使用以下方法将一个大的列表拆分为多个较小的列表:
这段代码使用了Java 8的流(Stream)API,通过
List<Integer> largeList = new ArrayList<>(); // 假设这是你要拆分的大列表int chunkSize = 10; // 每个小列表的大小List<List<Integer>> smallLists = largeList.stream().collect(Collectors.groupingBy(it -> it / chunkSize)).values().stream().map(list -> list.stream().collect(Collectors.toList())).collect(Collectors.toList());
groupingBy方法将大列表按照指定的规则(这里是将元素除以chunkSize取整)进行分组,然后将每个分组转换为一个新的列表。Lists.partition()方法:Lists.partition()方法将大列表拆分为指定大小的子列表。Lists.partition()`方法会返回一个包含指定大小的子列表的列表。需要注意的是,如果大列表的大小不是子列表大小的整数倍,那么最后一个子列表将包含不足指定大小的元素。
import com.google.common.collect.Lists;List<Integer> largeList = new ArrayList<>(); // 假设这是你要拆分的大列表int chunkSize = 10; // 每个子列表的大小List<List<Integer>> smallLists = Lists.partition(largeList, chunkSize);
CollectionUtils.subList()方法:CollectionUtils.subList()方法将大列表拆分为指定大小的子列表。CollectionUtils.subList()`方法通过传入起始索引和结束索引,返回一个包含指定元素的子列表。这里使用了一个循环来依次取出每个子列表。需要注意的是,如果大列表的大小不是子列表大小的整数倍,那么最后一个子列表将包含不足指定大小的元素。
import org.apache.commons.collections4.CollectionUtils;import java.util.List;import java.util.ArrayList;import java.util.Iterator;List<Integer> largeList = new ArrayList<>(); // 假设这是你要拆分的大列表int chunkSize = 10; // 每个子列表的大小List<List<Integer>> subLists = new ArrayList<>();int size = largeList.size();for (int i = 0; i < size; i += chunkSize) {subLists.add(new ArrayList<>(CollectionUtils.subList(largeList, i, Math.min(i + chunkSize, size))));}