java - ArrayList 包含对 TreeNode 的引用,空间复杂度是多少?

标签 java object arraylist space-complexity

   TreeNode root = new TreeNode(5);
    ArrayList<TreeNode> arr = new ArrayList<TreeNode>();
    for(int i = 0; i < n; i++){
        arr.add(root);
    }

在上面的代码中,单个TreeNode对象被添加到 ArrayList<TreeNode> arr n次。我认为arr空间复杂度应为 O(1)因为它正在保存对堆上单个内存块的引用。我正在和我的 friend 讨论这个问题,他们有不同的看法,认为它可能有O(n)复杂。大家觉得怎么样?

最佳答案

ArrayList 仍然需要存储引用 n 次,使其复杂度为 O(n)。

ArrayList 由 Object[] 支持,如果你查看源代码

public boolean add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}

每当添加一个元素时,它就会添加到支持对象数组中。

关于java - ArrayList 包含对 TreeNode 的引用,空间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191973/

相关文章:

java - 如何迭代或读取选定列上的所有行

java - 在java中识别一个新设备

javascript - JS。遍历多维数组以计算每列中元素的出现次数

java - java中大量整数流的统计

java - 将 JsonArray 数据添加到 ArrayList 中

Java Android方法需要很长时间才能执行?

javascript - 如何在 elements 属性中设置 JavaScript 对象的数组?

javascript - 将对象数组合并为一个对象数组

java - 列表正在用最新值替换所有旧值

java - 不使用 Math.BigInteger 的高幂模