首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java集合框架实现的大O总结?

Java集合框架实现的大O总结?
EN

Stack Overflow用户
提问于 2009-02-18 04:26:24
回答 4查看 217.5K关注 0票数 177

我可能很快就会教一门"Java速成课程“。虽然假设受众成员知道Big-O表示法可能是安全的,但假设他们知道各种集合实现上的各种操作的顺序可能并不安全。

我可以花时间自己生成一个摘要矩阵,但是如果它已经存在于公共领域的某个地方,我肯定会重用它(当然,要有适当的信任)。

有谁有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-29 15:41:29

这个网站非常好,但不是专门针对Java的:http://bigocheatsheet.com/

票数 161
EN

Stack Overflow用户

发布于 2009-02-18 04:35:20

这本书的Java Generics and Collections有这个信息(页: 188,211,222,240)。

列出实现:

代码语言:javascript
复制
                      get  add  contains next remove(0) iterator.remove
ArrayList             O(1) O(1) O(n)     O(1) O(n)      O(n)
LinkedList            O(n) O(1) O(n)     O(1) O(1)      O(1)
CopyOnWrite-ArrayList O(1) O(n) O(n)     O(1) O(n)      O(n)

Set实现:

代码语言:javascript
复制
                      add      contains next     notes
HashSet               O(1)     O(1)     O(h/n)   h is the table capacity
LinkedHashSet         O(1)     O(1)     O(1) 
CopyOnWriteArraySet   O(n)     O(n)     O(1) 
EnumSet               O(1)     O(1)     O(1) 
TreeSet               O(log n) O(log n) O(log n)
ConcurrentSkipListSet O(log n) O(log n) O(1)

Map实现:

代码语言:javascript
复制
                      get      containsKey next     Notes
HashMap               O(1)     O(1)        O(h/n)   h is the table capacity
LinkedHashMap         O(1)     O(1)        O(1) 
IdentityHashMap       O(1)     O(1)        O(h/n)   h is the table capacity 
EnumMap               O(1)     O(1)        O(1) 
TreeMap               O(log n) O(log n)    O(log n) 
ConcurrentHashMap     O(1)     O(1)        O(h/n)   h is the table capacity 
ConcurrentSkipListMap O(log n) O(log n)    O(1)

队列实现:

代码语言:javascript
复制
                      offer    peek poll     size
PriorityQueue         O(log n) O(1) O(log n) O(1)
ConcurrentLinkedQueue O(1)     O(1) O(1)     O(n)
ArrayBlockingQueue    O(1)     O(1) O(1)     O(1)
LinkedBlockingQueue   O(1)     O(1) O(1)     O(1)
PriorityBlockingQueue O(log n) O(1) O(log n) O(1)
DelayQueue            O(log n) O(1) O(log n) O(1)
LinkedList            O(1)     O(1) O(1)     O(1)
ArrayDeque            O(1)     O(1) O(1)     O(1)
LinkedBlockingDeque   O(1)     O(1) O(1)     O(1)

java.util包的javadoc底部包含一些很好的链接:

票数 262
EN

Stack Overflow用户

发布于 2009-02-18 04:31:55

Sun为每个集合类提供的Javadoc通常会确切地告诉您您想要什么。HashMap,例如:

此实现为基本操作(get和put)提供了constant-time performance,假设散列函数将元素适当地分散到存储桶中。在集合视图上迭代所需的时间与HashMap实例的“容量”(存储桶的数量)加上其大小(键值映射的数量)成比例。

TreeMap

此实现为containsKey、get、put和remove操作提供了保证的log(n)时间开销

TreeSet

此实现为基本操作(添加、删除和包含)提供了保证的log(n)时间开销。

(强调我的)

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/559839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档