java中常用的5種map


前言

java為數據結構中的映射定義了一個接口java.util.Map,有五個實現類:HashMap、LinkedHashMap、HashTable、TreeMap、ConcurrentHashMap

 

1.HashMap

HashMap

 

  最常用的Map,根據鍵的hashcode值來存儲數據(采用鏈地址法,也就是數組+鏈表+紅黑樹的方式),根據鍵可以快速獲得它的值(因為相同的鍵hashcode值相同,在地址為hashcode值的地方存儲的就是值,所以根據鍵可以很快獲得值。即使鍵值不同而hashcode值相同,也能快速找到對應hashcode的鏈表,從而通過遍歷快速找到值)。

  HashMap最多只允許一條記錄的鍵為null,HashMap不支持線程同步,即任意時刻可以有多個線程同時寫。

2.HashTable(基本已被淘汰)

 

  HashTable的操作幾乎和HashMap一致,主要的區別在於HashTable為了實現多線程安全,在幾乎所有的方法上都加了synchronized鎖,而加鎖的結果就是Hashtable操作的效率十分低下。

3.LinkedHashMap

  LinkedHashMap是HashMap的一個子類,但它保持了記錄的插入順序(內部維護了一個雙向鏈表),遍歷時會通過鏈來遍歷。

4.TreeMap

  實現了SortMap接口,能夠把保存的記錄按照鍵排序(默認升序),也可以指定排序比較器,遍歷時得到的數據是排過序的,底層用紅黑樹實現

5.ConcurrentHashMap

  ConcurrentHashMap是一個並發散列映射表的實現,它允許完全並發的讀取,並且支持給定數量的並發更新。相比於HashTable和同步包裝器包裝的HashMap,要快很多。因為這兩者采用的是一個全局所來同步不同線程間的並發訪問,使得訪問變成串行的了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM