本帖最后由 苏格拉底的弟子 于 2012-1-5 22:34 编辑
集合框架里面的set集合里面数据结构是哈希表结构的,假如定义了一个Person类如下,往hashSet集合中存入自定对象姓名和年龄相同为同一个人,重复元素。
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public int hashCode()
{
System.out.println(this.name+"....hashCode");
return name.hashCode()+age*37;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
System.out.println(this.name+"...equals.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
问题是为什么复写equals后 还要复写hashcode呢? 不复写hashcode 可以吗? |