2010-12-17 8 views
1

ハッシュマップのデータは内部的にどのように格納されていますか?私はそれがキーのHashCode値を計算して格納することを知っていました。同じハッシュコードを持つ2つのキーバケット。しかし、なぜ「2つのキーが書き込みの上に同じハッシュマップです」あれば、既存のもの?2つのキーは同じハッシュマップです "既存のもの?

答えて

1

ハッシュコードの主な目的は、ハッシュベースのコレクションでequalsメソッドの呼び出し回数を減らすことです。 equalsメソッドで同じハッシュコードがtrueを返す必要はありません。しかし、あなたがその等価が真であると言うなら、それは真実でなければなりません。

9

これはそれが意図していることです。キー/値のペアのマッピングです。キーは0または1の値に関連付けられます。putキーの2番目の値は、そのキーのエントリが置き換えられます。

ハッシュコードだけに基づいているわけではありません - それは同じようにキーをテストします。 2つのキーは等しくないが、同じハッシュコードを持つことができます。重要なことは、2つの等しいキーは同じハッシュコードを持つである必要があります。

単一のキーに複数の値を格納する場合は、GuavaのMultimapのようなものを使用する必要があります。

4

hashCode()が同じ場合、値を上書きしません。それらがequalsメソッドで等しい場合にのみ上書きされます。

1

ハッシュ関数は一般に重複データを排除するために使用されます。そのため、コレクションには重複データを格納することを許可していないHashmapのような と入力されます。 このアルゴリズムは、検索時に重複を避けるためにデータベースでも使用されています。

関連する問題