HashMap知識,ArrayList知識

2021-09-19 15:58:25 字數 548 閱讀 9766

hashtable 的擴容機制

void resize(int newcapacity)

entry newtable = new entry[newcapacity];

transfer(newtable);

table = newtable;

threshold = (int) (newcapacity*loadfactor);

}

transfer方法將原有的entry陣列的元素拷貝到新的entry陣列裡

1 void transfer(entry newtable)  while (e != null);

15 }

16 }

17 }

對舊陣列中的每乙個元素e:先計算每乙個元素在新的陣列中的位置,e.next指向新陣列所在位置(首次為null),將每乙個元素賦值給新的陣列中對應的位置,e指向e所在鍊錶(如果存在鍊錶的話)的下乙個元素;從而下乙個元素進來時總是在靠近陣列此位置的第乙個位置(實現了鍊錶頭部插入)

hashmap知識 待續

hashmap原理 hashmap是否初始化 1.hashmap預設bucket陣列多大 16 2.new hashmap 19 的時候bucket陣列多大 32 最接近19的2的冪次方 3.hashmap什麼時候開闢bucket陣列占用記憶體 put的時候 4.hashmap時擴容 put的元素達...

HashMap知識總結

問題5 說說hashmap是如何進行擴容的可以嗎?問題6 那hashcode和equals在hashmap中是怎麼用的?jdk1.7的時候使用的是陣列 單鏈表的資料結構。但是在jdk1.8及之後時,使用的是陣列 鍊錶 紅黑樹的資料結構 當鍊表的深度達到8時,也就是預設閾值,會自動擴容,把鍊錶轉換成紅...

hashmap知識整理

hashmap底層資料結構是hash表 是由陣列加鍊表加紅黑樹實現的hash表,jdk1.8之前沒有紅黑樹。hashmap在put資料時需要先使用hash演算法結合陣列長度進行定址,找到陣列上的乙個槽位,如果槽位是空的就加入這個槽位中,如果槽位不是空的則加入該槽位上的鍊錶尾部 jdk 1.7 之前使...