首页 >Java >java教程 >如何在Java中高效地将ArrayList拆分为多个子列表?

如何在Java中高效地将ArrayList拆分为多个子列表?

DDD
DDD原创
2024-11-15 08:34:02677浏览

How to Efficiently Split an ArrayList into Multiple Sublists in Java?

将 ArrayList 拆分为多个子列表

在 Java 中,您可以有效地将 ArrayList 分成更小、大小相等的子列表。这在需要处理或管理小块数据的场景中非常有用。

使用 subList() 创建视图

subList() 方法ArrayList 类允许您获取指定范围内的原始列表的一部分的视图。调用 subList() 不会创建新列表,而是返回现有列表的视图。对子列表所做的任何更改都会反映在原始列表中,反之亦然。

List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7));

List<Integer> head = numbers.subList(0, 4); // View from index 0 to index 3 (exclusive)
List<Integer> tail = numbers.subList(4, 8); // View from index 4 to index 7 (exclusive)

创建非视图子列表

如果您要求子列表独立原始列表的,您可以从子列表视图显式创建新的 ArrayList 对象。

List<List<Integer>> chopped = new ArrayList<>();
for (int i = 0; i < numbers.size(); i += L) {
    List<Integer> sublist = new ArrayList<>(
        numbers.subList(i, Math.min(numbers.size(), i + L))
    );
    chopped.add(sublist);
}

这个方法创建子列表的深层副本,确保对切碎的子列表的更改不会影响原始列表。

示例用法

考虑一个称为数字的整数列表,其中包含[5、3、1、2、9、5、0、7]。您可以使用以下代码将此列表拆分为三个大小为 3 的子列表:

List<List<Integer>> choppedLists = chopped(numbers, 3);

choppedLists 变量现在将包含三个列表:[[5, 3, 1], [2, 9, 5] , [0, 7]]。您可以进一步修改这些子列表,而无需更改原始号码列表。

以上是如何在Java中高效地将ArrayList拆分为多个子列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn