java集合學習(2):Map和HashMap


Map接口

java.util 中的集合類包含 Java 中某些最常用的類。最常用的集合類是 List 和 Map。

Map 是一種鍵-值對(key-value)集合,Map 集合中的每一個元素都包含一個鍵對象和一個值對象。其中,鍵對象不允許重復,而值對象可以重復,並且值對象還可以是 Map 類型的,就像數組中的元素還可以是數組一樣。

它的基本操作有:添加key-value鍵值對”、“獲取key”、“獲取value”、“獲取map大小”、“清空map”等基本的key-value鍵值對操作。

Map是一個接口不能實例化,Map 接口主要有兩個實現類:HashMap 類和 TreeMap 類。其中,HashMap 類按哈希算法來存取鍵對象,而 TreeMap 類可以對鍵對象進行排序。

 

小結:

  • Map提供了一種映射關系,其中的元素是以鍵值對(key-value)的形式存儲,能夠實現根據key快速查找value
  • Map中的鍵值對以Entry類型的對象實例形式存大
  • 鍵(key值)不可重復——value值可以

 

HashMap類

  • HashMap是Map的一個重要實現類,也是最常用的,基於哈希表實現
  • HashMap中的Entry對象是無序排列的
  • Key值和value值都可以為null,但是一個HashMap只能有一個key值為null的映射(key不可重復)

 

HashMap與Map的關系如圖:

從圖中可以看出: 
(01) HashMap繼承於AbstractMap類,實現了Map接口。Map是"key-value鍵值對"接口,AbstractMap實現了"鍵值對"的通用函數接口。 
(02) HashMap是通過"拉鏈法"實現的哈希表。它包括幾個重要的成員變量:table, size, threshold, loadFactor, modCount。
  table是一個Entry[]數組類型,而Entry實際上就是一個單向鏈表。哈希表的"key-value鍵值對"都是存儲在Entry數組中的。 
  size是HashMap的大小,它是HashMap保存的鍵值對的數量。 
  threshold是HashMap的閾值,用於判斷是否需要調整HashMap的容量。threshold的值="容量*加載因子",當HashMap中存儲數據的數量達到threshold時,就需要將HashMap的容量加倍。
  loadFactor就是加載因子。 
  modCount是用來實現fail-fast機制的。

 

 

 待續....

 

參考與推薦:

1、https://www.cnblogs.com/chengxiao/p/6059914.html

2、https://www.cnblogs.com/skywang12345/p/3311126.html

3、https://www.cnblogs.com/lzq198754/p/5780165.html

4、https://www.cnblogs.com/skywang12345/p/3310835.html

5、Java集合學習手冊(1):Java HashMap

6、HashMap多線程並發問題分析

 


免責聲明!

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



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