オブジェクトをハッシュマップのキーとして使用する方法。オブジェクトをキーとして使用する場合、そのオブジェクトのequalsメソッドとhashcodeメソッドをオーバーライドする必要がありますか?オブジェクトをJavaのハッシュマップのキーとして使用できますか?
答えて
単純な親ルールでは、の不変オブジェクトをとしてHashMap
に使用します。それが可変であれば、その後、hashcode()
値またはequals()
条件が変更される場合があります
、あなたはあなたのHashMap
からそれを取得することはできないだろう:
ので。
さらに正確には、equals()
とhashcode()
を計算するために使用されるクラスフィールドは不変である必要があります。あなたが持っているだろう任意のハッシュベースのデータ構造のキーとして使用するにはequals()
- :
さて、あなたは独自のクラスを作成するとします上書きする
hashcode()
(もう一度、心の中で不変性を保つ)
は、2つのオブジェクトがequal()
されている場合は、そのhashcode()
が同様に等しくなるべきであることを忘れないでください!
hashCode() -HashMapは、HashMapから値を取得するためのput(key、value)メソッドを格納し、取得(key)するメソッドを提供します。 put()メソッドを使用して(Key、Value)ペアを格納すると、HashMap実装はKeyオブジェクトをhashcodeで呼び出して、Entryオブジェクトが格納されるバケットを見つけるために使用されるハッシュを計算します。 get()メソッドを使用して値を取得すると、再びkeyオブジェクトが使用されてハッシュが計算され、その特定のキーが格納されているバケットを見つけるために使用されます。
equals() equals()メソッドは、オブジェクトが等しいかどうかを比較するために使用されます。 HashMapキーオブジェクトが比較に使用される場合、equals()メソッドを使用してMapもハッシュ衝突を処理する方法を知っています(ハッシュ衝突とは同じハッシュ値を持つ複数のキーを意味するため、同じバケットに割り当てられます)。 hashCodeメソッドは、キーが格納されているバケットを見つけるのに役立ちます。equalsメソッドは、複数のキーと値のペアが1つのキーに格納されている可能性があるため、正しいキーを見つけるのに役立ちます。 。バケット
あなたは、それが適切にhashCode
とequals
メソッドを定義しているようにHashMap
で任意のオブジェクトを使用することができます - ハッシュメカニズムは、それらに依存しているため、それらは絶対的に重要である
"正しく定義されたハッシュコードと等価"についてもっと詳しく説明する必要があると思います:) –
@SarthakMittal質問は、 "そのオブジェクトのequalsメソッドとhashcodeメソッドをオーバーライドする必要がありますか? –
はい、trueですが、equals()とhashcode()コントラクトを実行しても、キーとして可変オブジェクトを使用しないでください! :) –
- 1. javaハッシュマップでJSONオブジェクトを使用する
- 2. ハッシュマップのキーとしてArrayList
- 3. 引用符をキーとして使用するBashハッシュマップ
- 4. Scverseを使用してハッシュマップのキーとしてキーを使用して値を取得する
- 5. キーと値を持つHashMapは、Javaを使用して他の2つのハッシュマップの値と同じです
- 6. RedisのキーとしてJavaオブジェクトを使用するには?
- 7. Javaオブジェクトをキーとして使用するにはJSONでは?
- 8. Javaの整数配列としてハッシュマップのキーを取得します
- 9. アンドロイド2次元のハッシュマップIは、オブジェクトのハッシュマップを作成し、2次元のキーを使用したい
- 10. ハッシュマップのキーとしてのコンストラクタ?
- 11. Javaのメソッドの変数としてオブジェクトを使用できますか?
- 12. オブジェクトのプロパティを別のオブジェクトのキーとして使用しています。SyntaxError:missing:after
- 13. NSLocalizedStringを辞書のキーとして使用できますか?
- 14. ThreadLocalをHashMapのキーとして使用できますか?
- 15. ストリームコレクタを使用してJavaオブジェクトからキー値を取得
- 16. オブジェクトのリストをJavaのハッシュマップに変換します
- 17. すべてのキーのシングルバイト[]配列を持つJavaハッシュマップ
- 18. Javaでキー・キー・マップ(キー・バリューではなく)を使用できますか?
- 19. ページオブジェクトモデルのオブジェクトを配列やハッシュマップで整理できますか?
- 20. 既知のインデックスを使用したJavaハッシュマップと2D配列パフォーマンス
- 21. オブジェクトをOOJSの関数として使用できますか?
- 22. JPAアノテーションを使用してハッシュマップをマップできません
- 23. オブジェクトリストを辞書キーとして使用できますか?
- 24. JSON4S hashCodeメソッドをキーとして使用できますか?
- 25. Javaハッシュテーブルを使用するためのリソース?難しさの山。ハッシュマップを使用できません
- 26. ハッシュマップに重複キーを挿入できますか?
- 27. JNIを使用してJavaコード内のC++オブジェクトを参照できますか?
- 28. dtoクラスをキーの値として含むハッシュマップをどのように反復処理できますか?
- 29. 同時ハッシュマップの同期ブロックを使用していますか?
- 30. javaでハッシュマップを使用して.datファイルからデータを取り出す方法
何ですか。 目標とする言語? – xmike
java言語 –