JDK7中HashMap的解析(未完)

2021-10-05 11:37:38 字數 554 閱讀 3231

1、hashmap採用的是資料+鍊錶的儲存結構

2、初始化預設長度為16,每次擴容*2,負載因子預設0.75

3、擴容核心類

void transfer(entry newtable, boolean rehash)

int i = indexfor(e.hash, newcapacity);

e.next = newtable[i];

newtable[i] = e;

e = next;}}

}上面的方法中,採用陣列迴圈巢狀鍊錶遍歷的方式將每個元素對應到新陣列中的指定位置的鍊錶中

entrynext = e.next;..

.e = next;

這個很明顯是鍊錶遍歷下乙個元素

int i = indexfor(e.hash, newcapacity);//根據hash值重新定位當前元素在新陣列中的下標位置

接下來這兩句乍一看比較難理解,其實說開了就比較簡單了,它是將新元素插入到鍊錶的表頭而已

e.next = newtable[i];

newtable[i] = e;

JDK7與JDK8中HashMap的實現的區別

hashmap底層維護乙個陣列,陣列中的每一項都是乙個entry transient entry table 我們向 hashmap 中所放置的物件實際上是儲存在該陣列當中 而map中的key,value則以entry的形式存放在陣列中 static class entryimplements ma...

JDK7 與 JDK8 中 HashMap 的實現

jdk7中的hashmap hashmap底層維護乙個陣列,陣列中的每一項都是乙個entry transient entry table 我們向 hashmap 中所放置的物件實際上是儲存在該陣列當中 而map中的key,value則以entry的形式存放在陣列中 static class entr...

JDK7 與 JDK8 中 HashMap 的實現

jdk7中的hashmap hashmap底層維護乙個陣列,陣列中的每一項都是乙個entry transient entry table 我們向 hashmap 中所放置的物件實際上是儲存在該陣列當中 而map中的key,value則以entry的形式存放在陣列中 static class entr...