HashMap比较的是equals,IdentitiHashMap比较的是对象地址(是引用而不是值)
package com.yinbodotcc;
import java.util.*;
public class SuspiciousSort {
public static void main(String args[ ]) {
Map<One, String> m =
new IdentityHashMap<One, String>();//最后输出是2
//Map<One, String> m =//换为下面这个你就发现答案是1
// new HashMap<One, String>();
m.put(new One(1), "Mouse");
m.put(new One(1), "Mantle");
System.out.println(m.size());
}
}
class One
{
int age;
public One(int age)
{
this.age=age;
}
public boolean equals(Object o)
{
return age==((One)o).age;
}
public int hashCode()
{
return 37*age;
}
}