Java 集合框架实现的 Big-O 表示法
了解各种 Java 集合框架实现的 Big-O 操作顺序至关重要:为特定任务选择适当的数据结构。
列表实现
- ArrayList:用于 get、add、contains 和 iterator.remove 的 O(1) ;删除 (0) 的时间复杂度为 O(n)
- LinkedList:获取的时间复杂度为 O(n),添加、包含和删除(0) 的时间复杂度为 O(1),迭代器.删除的时间复杂度为 O(1)
- CopyOnWriteArrayList:获取为 O(1),添加、包含和删除 (0) 为 O(n),iterator.remove 为 O(n)
Set 实现
- HashSet:添加和包含 O(1),下一个 O(h/n)(其中 h 是表容量)
- LinkedHashSet:O(1)对于所有操作
- CopyOnWriteArraySet:添加和包含为 O(n),对于下一个
- EnumSet:对于所有操作为 O(1)
- TreeSet:O (log n) 对于所有操作
- ConcurrentSkipListSet: O(log n) 对于所有操作
Map 实现
- HashMap :get 和 containsKey 为 O(1),next 为 O(h/n)(其中 h 是表容量)
- LinkedHashMap:所有操作为 O(1)
- IdentityHashMap:O (1) 对于 get 和 containsKey,下一个操作为 O(h/n)(其中 h 是表容量)
- EnumMap:所有操作都为 O(1)
- TreeMap:O(log n) 对于所有操作
- ConcurrentHashMap:get 和 containsKey 为 O(1),next 为 O(h/n)(其中 h 是表容量)
- ConcurrentSkipListMap:O(log n )对于所有操作
队列实现
- PriorityQueue:O(log n)用于offer和poll,O(1)用于peek和size
- ConcurrentLinkedQueue:所有操作均为 O(1)
- ArrayBlockingQueue:offer、peek 和 poll 为 O(1),大小为 O(1)
- LinkedBlockingQueue:O (1) 对于 Offer、peek 和 poll,O(1) 对于 size
- PriorityBlockingQueue:O(log n) 对于 Offer 和 poll,O(1) 对于 peek 和 size
- DelayQueue : O(log n) 用于 Offer 和 poll,O(1) 用于 peek 和 size
- LinkedList:用于所有操作的 O(1)
- ArrayDeque:用于所有操作的 O(1)
- LinkedBlockingDeque:所有操作都是 O(1)
其他资源
所有 Java 集合框架的全面汇总表和带注释的概要实现,请参考以下资源:
- 集合概述:https://docs.oracle.com/javase/tutorial/collections/intro/index.html
- 注释大纲: https://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html
以上是不同 Java Collections Framework 实现的 Big-O 复杂性如何影响性能并指导数据结构选择?的详细内容。更多信息请关注PHP中文网其他相关文章!