当向HashSet里添加元素时,是先根据Hashcode方法来得到哈希值,就是元素所在引用的地址值,如果这两个元素的哈希值不等时,就直接被加入HashSet里了,如果相等了,这时候再用equals来判断这两个对象是否相等。
一般原则是这样的,我们一定要把我们认为相等的元素排除掉,比如学生类,我们如果认为姓名和年龄相等,就是指同一个学生,所以hashcode()方法可以这样写hashcode(){
return name.hashcode()+age;
}
equals(Object obj) {
if (obj istanceof Student){
Student s=(Student) obj
}
if (this.name.equals(s.name)&&this.ag==s.age){
return true;
}else{
return false
}
} |