Java中的Map包含了幾種基本實現:HashMap TreeMap LinkedHashMap WeakHashMap ConcurrentHashMap IdentityHashMap
hashCode() 是根類Object中的方法 因此所有Java對象都具有hashcode 散列碼
HashMap 就是使用對象的hashcode進行快速定位查詢的,此方法較傳統的get方法可以顯著提高性能
- HashMap Map 基於散列表的實現,它的出現取代了HashSet。 插入和查詢“鍵值對”的開銷是固定的。可以通過構造器設置容量和負載因子,以調整容器性能。
- LinkedHashMap 類似於HashMap的實現。在遍歷LinkedHashMap時,取得k v 的順序是其插入順序,或者是最近最少使用(LRU)的次序, 於是沒有被訪問過的元素(可以看做是需要刪除的元素)就會出現在隊列前面,效率只比HashMap慢一點點,而在迭代訪問時反而更快,因爲其使用鏈表維護內部次序。
- TreeMap Map基於紅黑樹的實現。查看 鍵 或者 鍵值對的時候,他們會被排序。TreeMap的特點在於,所得到的結果是經過排序的。注* TreeMap是唯一帶有subMap() 方法的Map,它可以返回一個子樹。
- WeakHashMap 弱鍵(weak key)映射,允許釋放映射所指向的對象。如果映射之外沒有指向某個 key,則這個鍵可以被垃圾回收器回收。
- ConcurrentHashMap 線程安全Map(在本blog中有詳細介紹)
- IdentityHashMap 使用==代替equals() 對 鍵 進行比較的散列映射。(爲解決特殊問題而設計,應用範圍較窄)