1. 程式人生 > >對於hashmap的一些簡單理解

對於hashmap的一些簡單理解

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機制的。