我一直在使用OpenJDK 1.7的Java文档,但是我没有看到很多关于Big-Oh表示法的信息在不同容器类型之间的操作复杂性方面,这使得更难以知道哪个是最多的用于我手头任务的表现收集;例如,实现堆栈或队列。
我一直在使用ArrayDeque
来跟随我的C ++本能。有基础知识,例如ArrayList
比LinkedList
快,但似乎没有一致的部分。在C ++文档中,有一个类似下面的部分。任何谈论容器之间复杂性的Javadoc引用都会有所帮助。
C ++示例:http://en.cppreference.com/w/cpp/container/unordered_set/equal_range
复杂性
平均大小写常数,最差情况是容器大小的线性。
Java示例:嵌入在ArrayList文档中,我发现了以下内容
size,isEmpty,get,set,iterator和listIterator操作以恒定时间运行。添加操作以分摊的常量时间运行,即添加n个元素需要O(n)时间。所有其他操作都以线性时间运行(粗略地说)。与LinkedList实现相比,常数因子较低。