我在Java中遇到了一个关于arraylist的面试问题,我觉得它很有趣,但不知道如何回答:
What attention should be paid when using arrayList to store large object?
我想知道我们是否应该从时间/空间复杂性的角度来回答这个问题?
谢谢
发布于 2013-03-13 09:14:38
Java中的所有对象都存储为引用、容器和变量等,因此在C++术语中,所有容器只存储指向对象的指针。在这种情况下,对于大多数用例(如果不是所有用例),对象的大小应该是无关的。
发布于 2013-03-13 09:24:36
ArrayList在内部使用Object[]。一旦达到最大容量,它将创建一个大小是原始数组1.5倍的新数组,并从旧数组复制到新数组。可能是面试者想要检查大对象复制件的成本
ArrayList: how does the size increase?
检查ensureCapacity() - http://www.docjar.com/html/api/java/util/ArrayList.java.html
发布于 2013-03-13 11:51:47
ArrayList支持动态阵列,可以根据需要进行扩展。在Java中,数组具有固定的长度,这意味着在创建数组之后,它们不能增长或收缩,这意味着您必须事先知道一个数组可以容纳多少个元素。但是,有时,您可能直到运行时才知道大小,所以在这种情况下,我们使用了ArrayList。ArrayList可以动态增加或减少大小。数组列表是使用初始大小创建的。当超过此大小时,集合将自动扩大。删除对象时,数组可能会收缩。另外,请注意Arraylist仅存储对象。
https://stackoverflow.com/questions/15380979
复制相似问题