亲宝软件园·资讯

展开

面试官: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

加载全部内容

相关教程
猜你喜欢
用户评论