描述:
对于hashmap来讲,jdk7和jdk8中的扩容触发条件有什么区别:
思路:
可以通过查看源码,得出答案
jdk7触发扩容需要满足两个条件:
(1)、 存放新值的时候当前已有元素的个数必须大于等于阈值(由初始化hash桶数量16和阈值0.75为例,当map中的数据达到16*0.75=12时,此时map中的数据已经达到了hashmap扩容机制的阈值,当再
次插入第13个数据时hashmp将自动扩容)
(2)、 存放新值的时候当前存放数据发生hash碰撞(当前key计算的hash值换算出来的数组下标位置已经存在值)
jdk8则只需要满足一个条件:
当前存放新值(注意不是替换已有元素位置时)的时候已有元素的个数大于等于阈值(即已有元素等于阈值,下一个存放后必然触发扩容机制)