0

私はペアクラスを持っています -

Map<Pair<String, String>, String> map = new HashMap<Pair<String, String>, String>();
map.put(new Pair("name1", "address1"), "Young");
map.put(new Pair("name2", "address2"), "Old");
.
.
. and so on.

ここで、2 つのペアを同等に扱わなければならないという要件があります。

pair1 = new Pair("name1", "address1");
pair2 = new Pair("address1", "name1");

pair2マップ内のキーとしてではなく、であることに注意してくださいpair1。だから私がするとき

map.get(pair1);
map.get(pair2);

と同じ結果が得られ"Young"ます。

それを達成するために私は何を追加すべきですか?

4

2 に答える 2

2

Pair クラスでオーバーライドする必要がequals()あります。hashcode()これらも参照してください https://stackoverflow.com/a/2265637/869488

https://stackoverflow.com/a/27609/869488 (これらの回答の「覚えている」という見出しを確認してください)

于 2013-03-13T06:13:24.277 に答える
1

クラスhashCode()equals()メソッドをオーバーライドして、Pair

pair1 = new Pair("name1", "address1");
pair2 = new Pair("address1", "name1");

ハッシュマップ内の同じハッシュ バケットになります。等しいオブジェクトが等しいハッシュ コードを取得するようにメソッドを正しくオーバーライドするhashCode()と、ハッシュマップは 2 つの等しいオブジェクトを見つけて同じハッシュ バケットに配置できます。

于 2013-03-13T06:16:19.847 に答える