java - 是否存在 Java 7's Hashmap implementation is preferred to Java8' s 实现的场景

标签 java performance hashmap

从 Java8 开始,我们钟爱的 HashMap 的行为有点不同。 如果 key 实现了一个可比较的接口(interface),每个散列将包含一个平衡树而不是链表。

这将冲突情况下的最坏时间复杂度从 O(n) 降低到 O(log(n)),参见 JEP180

是否存在从 Java7 升级到 Java8 会导致 HashMap 性能下降的情况?

最佳答案

Java8 将在 > N 的桶中的条目数中使用平衡树,其中选择 N empirically ,如果该数字 < K,则再次使用列表。如果存储桶中的条目数量以“treefyng/untreeifying”经常发生的方式变化,我预计性能会更差。这可能是由于特定的哈希函数而发生的。

我也不确定创建和查询树的开销是否值得小 N 的利润。

关于java - 是否存在 Java 7's Hashmap implementation is preferred to Java8' s 实现的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40884723/

相关文章:

java - 在代码 Java 中的正确位置将数组设置为 null

java - 在 java 8 jdk 中放置/获取 HashMap 复杂性

java - 为什么我违反了 SonarQube java 规则 "Zero should not be a possible denominator"

java - Appium 错误与 testdroid : java. lang.NoClassDefFoundError: org/openqa/selenium/internal/HasIdentity

javascript - react 。呈现和更新 1500 个 <li> 元素的简单列表时非常慢。我认为 VirtualDOM 很快

python - 加速django嵌套for循环时间序列

python - 加速用于计算矩阵余因子的 python 代码

java - 用具有两个泛型字段的类覆盖 hashCode

jsp - 如何使用 JSTL forEach 循环迭代 HashMap?

java - HashMap 内部的 HashMap