面试官:HashMap死循环形成的原因是什么?

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

面试官:HashMap死循环形成的原因是什么?

Java识堂   2020-03-17 我要评论
## 介绍 [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

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们