2016-11-30 27 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.