2012-04-10 10 views
0

さて、私のクラスの1つをキーとしてハッシュマップを使っています。HashMapキーのハッシュコードが失敗することがありますか?

私の質問は:私は正しいアイテムを1回取得すると、別の時間に悪いアイテムを取得することは可能ですか?

つまり、私は別の質問でここで見るハッシュコードアルゴリズムを実装しました。 そして、時々私は正しいアイテムを手に入れます。

もう一度それを見つけることができない1つの時間と権利を見つけることは可能ですか? 私はそれを削除していません!

ありがとうございます!

答えて

3

もちろん、一貫性が必要です。ハッシュ値は、同じアルゴリズムで計算された場合、同じアイテムに対して常に同じでなければなりません。

可能な答えは、最初の検索と2番目の検索の間で変更されたオブジェクトの内部値を使用して計算していることです。

2つの値が同じハッシュ値にマップされているという意味で衝突が発生する可能性はありますが、2回目の値は同じハッシュ値にマッピングされますが、2回目の値は同じ値ではありません。

+0

もちろん、hashCode()関数がOPによって(間違って)書き込まれている可能性があります。また、可変型、特に可変型フィールド上で動作していることも考えられます。 –

+1

それは私が考えた最初のことです、彼は彼に私たちに詳細を教えてくれますか? – Jack

+0

アイテムをhashMapに置くとき、私はこれを使います:basicRoomContent.put(room [n] [j]、si); room [n] [j]は自分のクラスのセルの行列オブジェクトで、ハッシュから項目を取得するには、次のように使います:basicRoomContent.containsKey(new Cell(x、y));私のhashcodeとequalsメソッドは次のようなものです:http://tinypaste.com/b78439dc ああ、助けてくれた人たちのためにあらかじめ – TiagoM

関連する問題