是否存在Java7的Hashmap实现优于Java8实现的情况

时间:2016-11-30 09:34:41

标签: java performance hashmap

从Java8开始,我们心爱的HashMap表现得有点不同。 如果密钥实现了类似的接口,则每个散列将包含一个平衡树而不是链接列表。

这可以减少从O(n)O(log(n))发生碰撞时的最差时间复杂性,请参阅JEP180

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

1 个答案:

答案 0 :(得分:2)

Java8将在>中使用桶中条目数量的平衡树。 N,其中N被选择empirically,并且如果该数字是< 3,则再次使用列表。 K.如果桶中的条目数量经常发生“treefyng / untreeifying”的话,我会期望性能更差。这可能是由于特定的哈希函数而发生的。

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