Map接口html
java.util 中的集合類包含 Java 中某些最經常使用的類。最經常使用的集合類是 List 和 Map。java
Map 是一種鍵-值對(key-value)集合,Map 集合中的每個元素都包含一個鍵對象和一個值對象。其中,鍵對象不容許重複,而值對象能夠重複,而且值對象還能夠是 Map 類型的,就像數組中的元素還能夠是數組同樣。git
它的基本操做有:添加key-value鍵值對」、「獲取key」、「獲取value」、「獲取map大小」、「清空map」等基本的key-value鍵值對操做。
Map是一個接口不能實例化,Map 接口主要有兩個實現類:HashMap 類和 TreeMap 類。其中,HashMap 類按哈希算法來存取鍵對象,而 TreeMap 類能夠對鍵對象進行排序。github
小結:算法
HashMap類數組
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機制的。併發
待續....函數
參考與推薦:學習
一、http://www.javashuo.com/article/p-kjwdvdbc-ke.html
二、http://www.javashuo.com/article/p-tnhktmbm-ds.html
三、https://www.cnblogs.com/lzq198754/p/5780165.html