2017-11-29 5 views
0

私はHashMapについて読んでいました。 HashCodereturns int値です。 int型の範囲より多くのオブジェクトを格納する必要がある、巨大なHashMapを持っているとどうなりますか?すべてのオブジェクトに対して、HashCode()メソッドは一意の値を返すことを考慮してください。この場合はどうなりますかより多くのオブジェクトをHashMapにintの範囲よりも格納する

  1. 例外はありませんか?または
  2. ランダムに動作しますか?
+1

https://stackoverflow.com/questions/11113871/what-happens-if-hashcode-calculated-exceeds-the-integer-max-limit – LuisFerrolho

+0

[JavaのHashMapオブジェクトにいくつの要素を格納できますか] (https://stackoverflow.com/questions/19886017/how-many-elements-can-i-store-in-a-hashmap-object-in-java) –

+0

わかりませんが、Java 8+では配列の側面が増えましたLong.MAX_INTになるはずなので、おそらくこれは新しい制限です –

答えて

0

20億件を超えるエントリを格納するとはどういう意味ですか? Javaのコレクションやマップはこれを行うことはできません。サイズは常にint値です。

巨大マップ用のサードパーティライブラリがあります。

これらの多くのオブジェクトをメモリに保存することはできますか? 1つのオブジェクトは少なくとも24バイト必要です(Compressed OOPSの範囲外になります)。そのため、100ギガバイトを超えるRAMを使用します。これは、HashMapに格納されているオブジェクトが非常に小さいためです。

PS:「ユニークな値を返すhashCode」の意味を理解できません。ハッシュコードは一意である必要はありません。 2億以上のエントリハッシュマップの場合、32ビットのハッシュコードは少し弱いが、理論的には可能です。

関連する問題