2015-09-18 13 views
6

java 7が提供するHashMapを使用しているとき、get()はO(1)からO(n)に進化してhere 8.Java 7の高速で一定のget()を使用したマップ

私はJava 7に固執してプロジェクトをアップグレードすることができないので、私はライブラリを探していますか、高速で定数のget()を持つ方法があります。

+1

http://java-performance.info/hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove-january-2015/ – assylias

+0

初期容量を大きくすると、異なるハッシュコード間の衝突(スペース/時間コスト)。ベスト(java 8でも)は、作成されたhashCodesをチェックして改善することです。 –

+3

本当に多くのハッシュ・コリジョンがありますか?あなたのキータイプは何ですか? –

答えて

7

のJava 8の変化の本質:

あなたのリンクから特定した後、リンクリストの代わりに、バランスの取れたツリーで自分のエントリを格納します衝突多数のキーを含むPerformance Improvement for HashMap in Java 8

バケツ閾値に達する。

あなたのhashCodeの実装を改善することにより衝突キーの数を減らすことにより、同等のものを達成できます。

hashCode計算の詳細や値のパターンがないと、さらにアドバイスすることは困難です。

関連する問題