1、判断变量是否存在相同的引用,如果引用相同,则不再判断hashcode、equals,并且认为已存在该元素,无法添加元素
2、如果指向不同的引用,则判断hashcode和equals是否一样,同时一样则认为已存在。
package p1;
import java.util.HashSet;
public class A {
public static void main(String[] args) {
A1 a1 = new A1();
A1 a2 = a1;
A1 a3 = a1;
HashSet<A1> set = new HashSet<A1>();
set.add(a1);
set.add(a2);
set.add(a3);
System.out.println(set.size());
}
}
class A1 {
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 11;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
// return super.equals(obj);
return false;
}
}
------ 答案:1
package p1;
import java.util.HashSet;
public class A {
public static void main(String[] args) {
A1 a1 = new A1();
A1 a2 = new A1();
HashSet<A1> set = new HashSet<A1>();
set.add(a1);
set.add(a2);
System.out.println(set.size());
}
}
class A1 {
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 11;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
// return super.equals(obj);
return false;
}
}
--------- 答案:2