ArrayList对象 - 构造函数如何工作,它们的时间复杂度是多少?

时间:2016-03-27 21:24:34

标签: java arraylist

我正在尝试收集有关ArrayList类中的构造函数如何工作以及它们的时间复杂性对于类项目的信息。

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList()的API文档中,

它声明get(),set()isEmpty(),iterator()和listIterator()是唯一的O(1)方法。

我认为这意味着构造函数是O(n),但我似乎无法找到任何具体说明这一点的内容,也不知道构造函数如何运行。

非常感谢任何见解。

1 个答案:

答案 0 :(得分:4)

ArrayList(int)基本上只会分配一个大小为n的数组,而不是其他任何东西。这可能在技术上是O(n),但是分配的复杂性本身相当复杂,而且经常只是O(1),虽然后来垃圾收集器的开销很大......

ArrayList(Collection)基本上只会在目标集合上调用toArray()并使用它,这将需要...但该集合类型需要多长时间,基本上总是O(n)。< / p>