HashSet存储原理
下图参考图下方代码
package com.test;
import java.util.HashSet;
// HashSet 底层是使用哈希表来支持的,特点:存取速度快
class Person{
int id;
String name;
public Person(int id,String name) {
this.id=id;
this.name=name;
}
@Override
public int hashCode() {
return this.id;
}
@Override
public boolean equals(Object obj) {
Person p=(Person) obj;
return this.id==p.id;
}
@Override
public String toString() {
return "{标号:"+this.id+" 姓名:"+this.name+"}";
}
}
public class Hset {
public static void main(String[] args) {
HashSet hset = new HashSet();
hset.add("盖伦");
hset.add("寒冰");
hset.add("皇子");
hset.add("盖伦"); //重复元素,不能添加进去
System.out.println("集合的元素:"+hset);
HashSet hset2 = new HashSet();
hset2.add(new Person(101, "唐玄奘"));
hset2.add(new Person(102, "孙悟空"));
hset2.add(new Person(103, "猪悟能"));
hset2.add(new Person(101, "沙悟净")); //重写了hashCode方法和equals方法,把元素id相同的视为重复元素。
System.out.println(hset2); //[{标号:101 姓名:唐玄奘}, {标号:102 姓名:孙悟空}, {标号:103 姓名:猪悟能}]
}
}