Java Arraylist 大小

标签 java arraylist size

我在理解“嵌套”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/

相关文章:

java - 将文本文件写入数组列表-ArrayIndexOutOfBoundsException错误

java - Android - 使用 Volley 显示自定义 ListView (使用 http 请求发送 header )

java - 批量 API 错误 : Upsert on Standard Salesforce Object

java - 由 api 创建时,关系不会显示在 neo4j Web 浏览器中...neo4j 2.0.1

java - 特定类型会影响 ArrayList 的性能吗?

java - 编写此程序的更有效方法

java - 在插入数据库之前尝试将 Arraylist<LatLng> 转换为字符串

html - CSS 2 div 大小自动相同的高度

jquery .children() 返回错误的大小

swift - 更改 TabView 中的 sf 符号重量/大小