public class Contact
{
int i;
String name;
public Contact(int iVal, String nameVal)
{
i = iVal;
name = nameVal;
}
}
public class MultiMap
{
public static void main (String args[])
{
java.util.HashMap m = new java.util.HashMap();
Contact m1 = new Contact(1, "name");
Contact m2 = new Contact(1, "name");
m.put(m1, "first");
m.put(m2, "second");
System.out.println(m.get(m1));
System.out.println(m.get(m2));
}
}
出力は次のとおりです。ハッシュコードなしの地図キーなどのオブジェクトと等しい
はfirst
second
どのようにこの「取得する」方法が振る舞うのか? m1とM2は同じ値を持ち、hashcode()をオーバーライドしていないため、Objectクラスのequals()メソッドが呼び出されますか?
これは間違いありませんか?
- 何のhashCodeメソッドはありません両方のオブジェクトとして上記のコードはm1の値をm2に置き換えずに正常に動作します。