對於hashmap的一些簡單理解
阿新 • • 發佈:2018-12-23
transient是java語言的關鍵字,變數修飾符,如果用transient宣告一個例項變數,當物件儲存時,它的值不需要維持。
hashmap是一個散列表(雜湊表,陣列加連結串列),它儲存內容是鍵值對對映。
hashmap繼承於AbstractMap,實現了Map,Cloneable,java.io.Serializable介面。
Hashmap的實現不是同步的,這意味著它不是執行緒安全的。它的key、value都可以為null。此外,Hashmap中的對映不是有序的。
hashmap的例項有兩個引數影響其效能:“初始容量”和“載入因子”。容量是雜湊表中桶的數量,初始容量只是在雜湊表在建立時的容量。載入因子是雜湊表在其容量自動增加之前可以達到多滿的一種尺度。當雜湊表中的條目數超出了載入因子與當前容量的乘積時,則要對該雜湊表進行rehash操作(即重建內部資料結構),從而雜湊表將具有大約兩倍的桶數。
(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機制的。
hashmap是一個散列表(雜湊表,陣列加連結串列),它儲存內容是鍵值對對映。
hashmap繼承於AbstractMap,實現了Map,Cloneable,java.io.Serializable介面。
Hashmap的實現不是同步的,這意味著它不是執行緒安全的。它的key、value都可以為null。此外,Hashmap中的對映不是有序的。
hashmap的例項有兩個引數影響其效能:“初始容量”和“載入因子”。容量是雜湊表中桶的數量,初始容量只是在雜湊表在建立時的容量。載入因子是雜湊表在其容量自動增加之前可以達到多滿的一種尺度。當雜湊表中的條目數超出了載入因子與當前容量的乘積時,則要對該雜湊表進行rehash操作(即重建內部資料結構),從而雜湊表將具有大約兩倍的桶數。
(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機制的。