要是想使用自定义的类作为HashMap的key,name就需要重写hashcode()和equals()方法。
public class PhoneNumber
{
private int prefix; //区号
private int phoneNumber; //电话号
public PhoneNumber(int prefix, int phoneNumber)
{
this.prefix = prefix;
this.phoneNumber = phoneNumber;
}
@Override
public boolean equals(Object o)
{
if(this == o)
{
return true;
}
if(!(o instanceof PhoneNumber))
{
return false;
}
PhoneNumber pn = (PhoneNumber)o;
return pn.prefix == prefix && pn.phoneNumber == phoneNumber;
}
@Override
public int hashCode()
{
int result = 17;
result = 31 * result + prefix;
result = 31 * result + phoneNumber;
return result;
}
}
这样之后就可以使用类作为hashCode的键了。
在HashMap中,查找key的比较顺序为:
1.计算对象的HashCode,看在表中是否存在
2.检查HashCode位置中的对象是否与当前对象相等
转载:https://www.cnblogs.com/yangmingyu/p/6921246.html