存储结构:哈希表(数组+链表+红黑树)
存储过程(重复的依据):
1、首先,根据HashCode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行下一步。
2、然后,再执行equals方法,如果equals方法为True,则认为是重复,否则为False形成链表。
在比较的过程中,需要重写HashCode方法和equals方法:
@Override
public int hashCode() {
int n1 = this.name.hashCode();
int n2 = this.age;
return n1+n2;
}
@Override
public boolean equals(Object obj) {
if (this == obj){
return true;
}
if (obj == null){
return false;
}
if (obj instanceof Student){
Student s = (Student) obj;
if (this.name.equals(s.getName())&&this.age==s.getAge()){
return true;
}
}
return false;
}