我正在尝试收集有关ArrayList类中的构造函数如何工作以及它们的时间复杂性对于类项目的信息。
在https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList()的API文档中,
它声明get(),set()isEmpty(),iterator()和listIterator()是唯一的O(1)方法。
我认为这意味着构造函数是O(n),但我似乎无法找到任何具体说明这一点的内容,也不知道构造函数如何运行。
非常感谢任何见解。
答案 0 :(得分:4)
ArrayList(int)
基本上只会分配一个大小为n的数组,而不是其他任何东西。这可能在技术上是O(n),但是分配的复杂性本身相当复杂,而且经常只是O(1),虽然后来垃圾收集器的开销很大......
ArrayList(Collection)
基本上只会在目标集合上调用toArray()
并使用它,这将需要...但该集合类型需要多长时间,基本上总是O(n)。< / p>