gpt4 book ai didi

Java Arraylist 大小

转载 作者:行者123 更新时间:2023-11-29 06:58:23 24 4
gpt4 key购买 nike

我在理解“嵌套”ArrayList 的 size() 输出时遇到问题:

ArrayList<ArrayList<ArrayList<ArrayList<String>>>> myEmpls = new ArrayList<>();
ArrayList<ArrayList<ArrayList<String>>> dummy2 = new ArrayList<>();
ArrayList<ArrayList<String>> dummy = new ArrayList<>();

for (int x = 0; x < 4; x++) {
myEmpls.add(dummy2);
}

System.out.println(myEmpls.size());

// returns 4 as expected

System.out.println(myEmpls.get(0).size());
System.out.println(myEmpls.get(1).size());

// both return 0 as expected

for (int x = 0; x < 10; x++) {
myEmpls.get(0).add(dummy);
}
System.out.println(myEmpls.get(1).size());

// returns 10 altough I added to myEmpls.get(0) and not
// myEmpls.get(1) so I expected this to still be 0.

有人能解释一下为什么会这样吗?也许我遗漏了一些明显的东西。

提前致谢。

最佳答案

您正在将 dummy2 的相同引用添加到 myEmpls 的所有四个位置。因此,当您访问它们中的任何一个时,您访问的对象与具有变量 dummy2 的对象相同,其中实际上有 10 个对象,因为您在其中添加了它。

你甚至可以这样做,它也会返回 10

System.out.println(dummy2.size());

如果你这样做

for (int x = 0; x < 4; x++) {
myEmpls.add(new ArrayList<ArrayList<ArrayList<String>>>());
}

它会像你预期的那样表现

关于Java Arraylist 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com