HashSet集合中remove()方法删除自定义类型对象的执行过程分析
注意:此处的remove方法删除自定义类型对象的执行过程分析是在之前博客add方法存储自定义类型对象的基础上,即Student类中已经重写了hashCode方法和equals方法,原因此处也不再赘述。详见详述HashSet集合中add()方法存储自定义类型对象的执行过程
下面是自定义类代码:
public class Student{
String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Student(String id) {
this.id = id;
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Student)) {
throw new ClassCastException("类型转换错误!");
}
Student student = (Student) obj;
return this.id.equals(student.id);
}
}
下面是测试代码:
HashSet<Student> hashSet = new HashSet<>();
hashSet.add(new Student("1"));
hashSet.add