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 實作
- 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) 對於所有>
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中文網其他相關文章!