在 Java 中,将一个 List 分割成多个大小为 1000 的子列表,可以采用两种方式:使用 split 方法和使用迭代器(Iterator)。
- 使用 split 方法:
List<Integer> originalList = ...; // 原始的 List
List<List<Integer>> subLists = new ArrayList<>();
for (int i = 0; i < originalList.size(); i += 1000) {
int endIndex = Math.min(i + 1000, originalList.size());
List<Integer> subList = originalList.subList(i, endIndex);
subLists.add(subList);
}
这种方法使用 subList
方法将原始列表划分成多个子列表。但需要注意的是,subList
方法返回的是原始列表的一个视图,对子列表的修改会反映到原始列表上。
- 使用迭代器:
List<Integer> originalList = ...; // 原始的 List
List<List<Integer>> subLists = new ArrayList<>();
Iterator<Integer> iterator = originalList.iterator();
while (iterator.hasNext()) {
List<Integer> subList = new ArrayList<>();
for (int i = 0; i < 1000 && iterator.hasNext(); i++) {
subList.add(iterator.next());
}
subLists.add(subList);
}
这种方法使用迭代器遍历原始列表,并逐个取出元素放入子列表中。每当子列表达到 1000 个元素或者原始列表遍历完成时,就将当前子列表添加到结果列表中。
对于大部分情况而言,使用迭代器比使用 split 方法更高效,因为迭代器只需要遍历一次原始列表,并逐个取出元素。而使用 split 方法则需要创建多个子列表,并进行切片操作。但对于非常大的列表,可能会出现内存消耗较大的情况,此时可以考虑分批读取数据以减少内存占用。