import java.util.HashSet;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
HashSet set = new HashSet();
set.add(new A());
set.add(new A());
set.add(new B());
set.add(new B());
set.add(new C());
set.add(new C());
System.out.println(set);
in.close();
}
}
class A{
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return true;
}
}
class B{
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 1;
}
}
class C{
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 2;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return true;
}
}
输出结果:
因为C类 重写了equals方法和hashCode, 导致HashSet 将两个对象判成了相同元素
[B@1, B@1, C@2, A@7d4991ad, A@4aa298b7]