HashSet去重复是从add开始的:
如果添加重复的对象就会被add自动去重复,下面我们分别用来实验下:
public static void main(String[] args) {
Set set=new HashSet();
Worker a=new Worker(“tom”,18,2000);
set.add(new Worker(“tom”,18,2000));
set.add(new Worker(“tom”,18,2000));
set.add(new Worker(“jerry”,18,2000));
set.add(a);
set.add(a);
Iterator<Woker> b=set.iterator();
while(b.hasNext())
System.out.println(b.next());
}
class Worker{
@Override
public String toString() {
return “Worker [name=” + name + “, age=” + age + “, salary=” + salary + “]”;
}
String name;
int age;
double salary;
public Worker() {}
public Worker(String name,int age,double salary) {
this.name=name;
this.age=age;
this.salary=salary;
}
public int hashCode() {
return 1;
}
public boolean equals(Object obj) {
return false;
}
}
当我们把hashCode和equals写死,也就是全部添加,当我们不写两个set.add(a)时输出结果是
可以明确的看到添加了重复的语句,因为这时我们的hashCode和equals写死,也就是全部添加,但是当我们只两个写set.add(a)时结果:
而这是并没有全部添加进来 ,原因就在于Set集合去重复是从add开始的。