理解Java中HashMap、LinkedHashMap、TreeMap的區別
HashMap、LinkedHashMap、TreeMap它們的行為和用例有所不同。讓我們探討一下它們的主要差異。
1.迭代順序
-
HashMap: 不保證迭代順序;鍵和值可以按任何順序返回。
-
TreeMap: 鍵和值依其自然順序或提供的比較器按升序排序。
-
LinkedHashMap: 鍵和值按它們原來的順序返回已插入。
2。效能
-
取得/放置/刪除/包含Key:
- HashMap: O(1)
- 樹狀圖: O(log(n))
- LinkedHashMap:O(1)
3。介面
-
HashMap:僅實作Map介面。
-
TreeMap:實作NavigableMap、Map和SortedMap介面。
-
LinkedHashMap: 僅實作 Map 介面。
4.空值/鍵
-
HashMap:同時允許空鍵和空白值。
-
TreeMap:只允許空
-
LinkedHashMap: 允許空鍵和空值。
5.快速失敗行為
-
HashMap: 在存在並發修改的情況下,不保證迭代器的快速失敗行為。
-
樹狀圖: 與HashMap。
-
LinkedHashMap: 與 HashMap 相同。
6.實作
-
HashMap:使用桶來儲存鍵值對。
-
TreeMap:使用紅黑樹來維護排序鍵。
-
LinkedHashMap: 使用雙連結儲存桶保留插入順序。
7.同步
-
HashMap:實作不同步。
-
TreeMap:實作不同步。
-
LinkedHashMap:實作不是已同步。
8。 Hashtables
Hashtables 是 Map 介面的遺留實現,它是強同步的,但效率低於 HashMap。對於大多數用例,通常建議使用 HashMap 而不是 Hashtable。
以上是HashMap、LinkedHashMap 或 TreeMap:我該使用哪種 Java Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!