HashMap的resize()方法不过以下三个问题
为什么要扩容?
何时扩容?
怎样扩容?
第一个问题:为什么要扩容?
这个问题答案可深可浅
散列表在不断的经过put()方法添加元素时 当指定长度的散列表达到扩容阈值 就要进行扩容的操作 如果不扩容 那么无法再往集合中添加元素 同时数据量达到一定程度还不扩容也会让HashMap的时间复杂的从O(1)-->O(n)
而扩容之后会让时间复杂度从O(n)-->O(logn)
所以说扩容是很有必要的 但是扩容同时也带来两个问题 何时扩容? 怎样扩容?
这两个问题进入代码来解析
一样的 看源码之前先看常量有哪些
以下是resize的核心代码
@SuppressWarnings({"rawtypes,"unchecked""})
这个注解的作用是屏蔽一些无关紧要的警告