【问题标题】:Addressing multi-dimensional arraylists寻址多维数组列表
【发布时间】:2023-04-07 23:28:01
【问题描述】:

我正在尝试基数排序,但在处理数组列表的数组列表时遇到了问题。该列表有 10 个空格,每个空格都有一个大小为 n 的桶。

ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(10);
ArrayList<Integer> bucket = new ArrayList<>();
bucket.add(99);
list.add(bucket);
list.add(bucket);
list.get(0).add(12); (6)

当我尝试使用 (6) 添加一个值时,它会为列表中的每个数组列表添加 12(可能是因为它们都是存储桶)。如何正确初始化数组列表,以便独立处理列表中的每个数组列表?我会以类似的方式访问列表中每个数组列表的元素吗?

【问题讨论】:

  • 您添加的 2 个存储桶是相同的(指向同一个数组列表)。您需要每次实例化一个新的数组列表 (bucket = new ArrayList();),然后再将其添加到您的列表中。

标签: java


【解决方案1】:

我认为你正在寻找的是

for (int i = 0; i < 10; i++) {

  list.add(new ArrayList<>());

}

如果需要,您也可以为每个存储桶设置大小 - 我认为通过将所需大小传递给 ArrayList 构造函数

【讨论】:

【解决方案2】:

当您将 12 添加到 list 中的 ArrayList 时,您将添加到引用的 ArrayList,在本例中为 bucketlist.get(0)list.get(1) 都将返回对相同 ArrayListbucket 的引用。

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2013-05-17
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多