HashSet存储自定义对象保证元素唯一性
为什么要存储自定义对象呢? 因为存储Java给我们提供的已有对象的话,我们不知道它到底重写了哪些方法来决定它保证元素唯一。 只有比较hashcode一致的时候,才会调用equals方法做比较.
package com.heima.bean;
public class Person {
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
System.out.println("执行了吗");
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
@Override
public int hashCode() {
return 10;
}
}
package com.heima.set;
import java.util.HashSet;
import com.heima.bean.Person;
public class Demo02_HashSet {
public static void main(String[] args) {
HashSet<Person> hs = new HashSet<>();
hs.add(new Person("张三", 23));
hs.add(new Person("张三", 23));
hs.add(new Person("李四", 24));
hs.add(new Person("李四", 24));
hs.add(new Person("李四", 24));
hs.add(new Person("李四", 24));
System.out.println(hs);
}
}