遇到了这个关于java中arraylist的面试题,觉得挺有意思的,但是不知道怎么回答:
What attention should be paid when using arrayList to store large object?
我想知道我们是否应该在时间/空间复杂性方面回答这个问题?
谢谢
遇到了这个关于java中arraylist的面试题,觉得挺有意思的,但是不知道怎么回答:
What attention should be paid when using arrayList to store large object?
我想知道我们是否应该在时间/空间复杂性方面回答这个问题?
谢谢
Java 中的所有对象都存储为引用、容器和变量等,因此在 C++ 术语中,所有容器仅存储指向对象的指针。在这种情况下,对象的大小应该与大多数用例(如果不是所有用例)无关。
ArrayList 内部使用 Object[]。一旦达到最大容量,它会创建一个大小为原始数组 1.5 倍的新数组,并将从旧数组复制到新数组。可能是面试官想检查这个带有大对象的副本的成本
检查 ensureCapacity() - http://www.docjar.com/html/api/java/util/ArrayList.java.html
ArrayList 支持可以根据需要增长的动态数组。在 Java 中,数组具有固定长度,这意味着在创建数组后,它们不能增长或缩小,这意味着您必须事先知道一个数组将包含多少个元素。但是,有时,您可能直到运行时才知道大小,因此在这种情况下我们使用了 ArrayList。ArrayList 可以动态增加或减少大小。数组列表是使用初始大小创建的。当超过这个大小时,集合会自动放大。移除对象后,数组可能会缩小。另外,请注意 Arraylist 仅存储对象。