一道HashSet经典题
一道经典题目,体会HashSet添加元素的过程
//Perosn已经重写equals()和hashCode()
@Test
public void test4(){
HashSet set=new HashSet();
Person p1= new Person("aa",20);
Person p2= new Person("bb",30);
set.add(p1);
set.add(p2);
System.out.println(set);//[Person{name='aa', age=20}, Person{name='bb', age=30}]
p1.setName("cc");
set.remove(p1);//此时p1的属性的哈希值对应的索引位置上没有元素,相当于移除了个寂寞
System.out.println(set);//[Person{name='cc', age=20}, Person{name='bb', age=30}]
set.add(new Person("cc",20));//找到对应哈希值的索引位置,并添加
System.out.println(set);//[Person{name='cc', age=20}, Person{name='cc', age=20}, Person{name='bb', age=30}]
set.add(new Person("aa",20));//以链表的形式添加到p1所在位置:Hash相等,equals()不等
System.out.println(set);//[Person{name='cc', age=20}, Person{name='cc', age=20}, Person{name='aa', age=20}, Person{name='bb', age=30}]
}