2016-11-30 20 views
9

Java8では、私たちの最愛の人物HashMapの動作が少し異なります。 キーが同等のインターフェイスを実装している場合、各ハッシュにはリンクされたリストの代わりにバランスのとれたツリーが含まれます。Java7のHashmap実装がJava8の実装よりも優先されるシナリオがありますか

これはJava8へJava7からのアップグレードでは、結果としてHashMapの性能劣化の原因となる状況がありますJEP180

参照、O(log(n))からO(n)から衝突した場合の最悪時の複雑さを軽減しますか?

+4

私はあなたが 'compareTo'の本当に遅い実装を持っている場合、パフォーマンスが悪化う推測する価値があるかはわかりません。 ;) – marstran

答えて

2

Java8は> Nのバケット内のエントリ数でバランスツリーを使用します.Nはempiricallyを選択し、< Kの場合はリストをもう一度使用します。バケットのエントリ数"treefyng/untreeifying"が頻繁に起こるように変化します。これは、特定のハッシュ関数のために発生する可能性があります。

はまた、私は木を作成し、照会のためのオーバーヘッドが小さいN.の利益

関連する問題