Java 集合框架實現的Big-O 表示法
在即將到來的Java 速成課程中,有必要提供一個簡潔的不同集合實現上的各種操作的時間複雜度的總結。
列表實作
Implementation | 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) |
列表實作
Implementation | 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) | - |
地圖實作
Implementation | 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) | - |
隊列實作
Implementation | 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 集合框架操作的 Big-O 時間複雜度是多少?的詳細內容。更多資訊請關注PHP中文網其他相關文章!