Java 中 Hashtable 、HashMap 、TreeMap 有什麼不同?

Java 中 Hashtable 、HashMap 、TreeMap 有什麼不同?

  • HashTable 最早期的 Java 類庫提供的一個 Hash表實現,本身是同步的不支持 null 鍵和值,對同步有導致性能開銷,很少被推薦使用。
  • HashMap 是應該更加廣泛的哈希表實現,行爲上與 hashtable 一致,主要區別是 Hashmap 不是同步的支持null 建和值。 HashMap 進行 put 或者 get 操作,可以達到常熟時間的性能,所以絕大多數場景都使用 HashMap。
  • TreeMap 則是基於紅黑樹提供的順序訪問的。與HashMap不同,它的get put remove之類的操作都是 O(log(N))的時間複雜度,具體順序可以通過的 Comparator 或者根據鍵的自然順序來判斷。

Map 整體結構

Hashtable 是擴展了 Dictonary 類,類結構上與 HashMap 之類不同,HashMap 繼承的是 abstractMap

HashMap 等其他 Map 都是擴展了 AbstractMap ,裏面包含了通用方法抽象。
image

HashMap 的性能表現非常依賴哈希表的有效性。

equals 和 hashcode 基本約定

  • equals 相等,hashco
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章