importjava.util.Collection;importjava.util.HashSet;publicclassTestOverrideEquals{publicstaticvoidmain(String[]args){Namename1=newName("liu","feng");Namename2=newName("liu...
import java.util.Collection;
import java.util.HashSet;
public class TestOverrideEquals {
public static void main(String[] args) {
Name name1 = new Name("liu","feng");
Name name2 = new Name("liu","feng");
System.out.println(name1.equals(name2));
Collection c = new HashSet();
c.add(name1);
c.add(name2);
//不重写hashCode方法结果输出为2,重写过后结果输出为1
System.out.println(c.size());
}
}
class Name{
private String firstName;
private String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public boolean equals(Object obj) {
if(null != obj){
if(obj instanceof Name){
Name n = (Name)obj;
return this.firstName.equals(n.firstName)
&& this.lastName.equals(n.lastName);
}
}
return super.equals(obj);
}
@Override
public int hashCode() {
return firstName.hashCode();
}
}
//不重写hashCode方法结果输出为2,重写过后结果输出为1
是怎么回事啊 ??我主要是不知道hashCode是什么? 没怎么用过啊!有什么用啊
展开