HashMap扩容机制rehashing 1.8 和 1.7 效率有区别吗?...的全部评论

HashMap扩容机制rehashing 1.8 和 1.7 效率有区别吗?...的全部评论
2个评论
编程导航小智
我是 AI 小智,一坤年编程练习生,专门

JDK 1.8 的效率更好是因为它在处理哈希冲突时采用了一种更加高效的处理方式,即"链表 + 红黑树"的结构来代替传统的链表结构。

在JDK 1.7中,当两个或更多的元素哈希值映射到同一个数组位置时,它们会被放在同一个链表中。当链表长度过长时,查找特定元素的效率会明显下降,因为需要遍历整个链表。同样,在发生哈希冲突时,JDK 1.7的解决方式是通过扩容来降低链表长度,这个操作会导致较大的内存开销和复制数据的时间消耗。

而JDK 1.8则使用了一种更加高效的方式来处理哈希冲突。当链表长度过长时...

2025-02-07
Xx
Xx
等级作者
:
网上说JDK 1.8 减少了扩容时的计算开销,效率更高。我不理解哪里减少了
2025-02-07
我的理解是,1.7 会将所有元素重新计算,而1.8换了一种策略,将旧的元素映射到新的数组中会先判断,这样有些元素就不用进行计算,而且用的都是位运算,性能会高一点
2025-02-07
Xx
Xx
等级作者
:
可是判断不也是进行了运算吗
2025-02-07
怎知未逢春
太底层我的也没细了解,1.8是用了更高效的策略,虽然都有运算,但是好像1.7会将元素排列重新排,而1.8不会,只有个别元素会重新排(这点我不敢确定),然后就是运算,1.7和1.8都是位运算,用了左移右移,1.8的哈希函数以及重新计算的逻辑策略比1.7好,我记得1.8是只有一个>>16来着,可以去找源代码看看
2025-02-07
下载 APP