面试官:HashMap死循环形成的原因是什么?
Java识堂 人气:0
## 介绍
[HashMap实现原理](https://blog.csdn.net/zzti_erlie/articlehttps://img.qb5200.com/download-x/details/79823187)
之前的文章已经分析了HashMap在JDK1.7的实现,这篇文章就只分析HashMap死循环形成的原因
死循环形成是在扩容转移元素的时候发生的
```java
void resize(int newCapacity) {
Entry[] oldTable = table;
int oldCapacity = oldTable.length;
if (oldCapacity == MAXIMUM_CAPACITY) {
threshold = Integer.MAX_VALUE;
return;
}
Entry[] newTable = new Entry[newCapacity];
transfer(newTable, initHashSeedAsNeeded(newCapacity));
table = newTable;
threshold = (int)Math.min(newCapacity * loadFactor, MAXIMUM_CAPACITY + 1);
}
```
发生的具体时机在transfer函数中,默认情况下rehash为false
```java
void transfer(Entry[] newTable, boolean rehash) {
int newCapacity = newTable.length;
for (Entry
加载全部内容