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