2016-11-30 70 views
9

从Java8开始,我们心爱的HashMap的行为有点不同。 如果密钥实现可比较的接口,则每个哈希将包含平衡树而不是链接列表。有没有Java7的Hashmap实现比Java8的实现更受欢迎的场景

这减少了从O(n)O(log(n))碰撞的情况下,最坏的时间复杂度,看到JEP180

有一种情况,就是升级从Java7到Java8会导致的HashMap作为结果的性能下降?

+4

利润我想,如果你有一个非常缓慢的执行compareTo'的'性能会恶化。 ;) – marstran

回答

2

Java8将在> N中使用桶中条目数量的平衡树,其中N选择empirically,如果该数字为< K,则再次使用列表。如果桶中的条目数量“treefyng/unreeifying”经常发生变化。这可能由于特定的散列函数而发生。

而且我不知道,如果开销用于创建和查询树是值得小N.