1. 程式人生 > >HashMap學習筆記,比較JDK1.7/1.8的區別

HashMap學習筆記,比較JDK1.7/1.8的區別

問題1:1.7和1.8各自如何讓連結串列資料雜湊的更均勻,即如何重新計算hash值

問題2:如何獲取新加元素在陣列中的下標,用什麼方法實現?

問題3:在擴容方面,一般情況下資料量大於當前容量*填裝因子時,會採取擴容。jdk1.7有什麼額外的判斷?例如key從1-100,初始容量為16,為何key在12的時候沒有去擴容,等於17的時候才去進行擴容。第二次擴容是在什麼時候?前兩次擴容有什麼區別?

問題4:擴容後重新計算下標時,jdk1.8針對1.7做了什麼優化?

問題5:發生hash衝突後,新的元素是怎樣新增進連結串列中,連結串列的開頭還是結尾?

問題6:jdk1.8中,當單個連結串列的長度大於8時會嘗試進行連結串列轉紅黑樹的操作,實際上優先進行什麼操作?

問題7:jdk1.8中,當資料量小於多少時,會將紅黑樹重轉成連結串列?

問題8:size有可能比capacity大嗎?

問題9:jdk1.8中,闡述連結串列結構rehash的邏輯。