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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
first
second
Run Code Online (Sandbox Code Playgroud)
这种"获取"方法如何表现?由于m1和M2具有相同的值并且我没有覆盖hashcode(),所以会调用Object类的equals()方法吗?
它是否正确 ?
Nic*_*men 11
当您的类没有覆盖hashCode()和equals(Object o)方法时,Java只使用对内存中对象的实际引用来计算值(即检查它是否与该类的实例相同).这就是为什么你仍然得到两个结果.
| 归档时间: |
|
| 查看次数: |
12428 次 |
| 最近记录: |