集合框架第21天(HashSet的存储过程及判断是为否重复元素)
HashSet
存储结构:哈希表(数组+链表+红黑树)
存储过程:
(1)根据HashCode计算保存的位置,如果此位置为空,则直接保存,如果不为空,则执行第二步
(2)执行equals方法,如果equals方法为true,则认为是重复值,否则将形成链表
注意:

元素出现重复,如果想让其判定为相同元素,那就需要重写HashCode和equals方法
HashCode方法重写:
@Override
public int hashCode() {
int n1 = this.name.hashCode();
int n2 = this.age;
return n1 + n2;
}
equals方法重写:
@Override
public boolean equals(Object o) {
if (this == o) { //判断是否相等
return true;
}
if (o == null) //判断是否为空
return false;
if (o instanceof Person) {
Person p = (Person) o;
if (this.name.equals(p.getName()) && this.age == p.getAge()) {
return true;
}
}
return false;
}
以上两个方法重写后,将认为是同一个元素:

在idea中使用Alt+insert快捷键,选择equals()andHashCode()可快速重写


浙公网安备 33010602011771号