1. 程式人生 > >關於面試中的HashMap

關於面試中的HashMap

底層結構:
雜湊表
JDK7:陣列+連結串列、Entry[ ]、table直接初始化容量為16
JDK8:陣列+連結串列+紅黑樹、Node[ ]、table沒有初始化,在第一次新增元素時才初始化
特點:
1、允許null鍵null值。2、不保證鍵的順序
hashmap執行緒不安全,可以使用JUC包中的ConcurrentHashMap解決
新增元素過程:
建立HashTable物件時,table陣列沒有初始化,只是載入因子loadFactor初始化0.75,如果是第一次新增元素(key元素要重寫hashcode和equals),初始化容量為16,臨界值為12,如果不是第一次新增,判斷是否有元素,沒有的話直接新增,有的話如果相等就覆蓋,不相等的話如果是樹的結構就根據樹的特點解決,連結串列的結構就按連結串列特點解決。
每次新增元素,先判斷 ++size > 臨界值threshold,如果滿足,進行2倍擴容,需要將所有元素重新計算存放,當連結串列的節點數 >= 8 && table的容量 >= 64 ,連結串列結構會轉換成樹結構