[Thinking in java] _容器 _Map

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() 對 鍵 進行比較的散列映射。(爲解決特殊問題而設計,應用範圍較窄)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章