都是最多見的一些 Map 實現,是以鍵值對的形式存儲和操做數據的容器類型。
Hashtable 是早期 Java 類庫提供的一個哈希表實現,自己是同步的,不支持 null 鍵和值,因爲同步致使的性能開銷,因此已經不多被推薦使用。
HashMap 是應用更加普遍的哈希表實現,行爲上大體上與 HashTable 一致,主要區別在於 HashMap 不是同步的,支持 null 鍵和值等。一般狀況下,HashMap 進行 put 或者 get 操做,能夠達到常數時間的性能,因此它是絕大部分利用鍵值對存取場景的首選,好比,實現一個用戶 ID 和用戶信息對應的運行時存儲結構。
TreeMap 則是基於紅黑樹的一種提供順序訪問的 Map,和 HashMap 不一樣,它的 get、put、remove 之類操做都是 O(log(n))的時間複雜度,具體順序能夠由指定的 Comparator 來決定,或者根據鍵的天然順序來判斷。
性能