* 需求:使用HashSet<Student>存储学生类型,并且保证学生对象不能重复!
* 学生的姓名和年龄:成员信息如果是一致,认为是同一个人
*
* 自定义类型
* HashSet的add方法:依赖于两个功能:HashMap<k,v>
* int hasCode()/equal()
* 1)先比较对象的哈希码值
* 算出每一个成员信息
* 2)如果成员信息的值算出相同
* 执行equals()方法
* 2.1)两个对象类型是否一致
* 字节码文件对象是否一致
* 比较年龄的内容是否一致
* 比较姓名的内容是否一致
import java.util.HashSet;
public class HashSetDemo2 {
public static void main(String[] args) {
//创建HashSet<Student>对象
HashSet<Student> set=new HashSet<Student>();
//添加信息
Student s1=new Student("丽丽",20);
Student s2=new Student("丽丽",20);
Student s3=new Student("php",20);
Student s4=new Student("java",20);
set.add(s4);
set.add(s1);
set.add(s2);
set.add(s3);
//遍历
for(Student s:set) {
System.out.println(s.getName()+" "+s.getAge());
}
}
}
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(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 "Student [name=" + name + ", age=" + age + "]";
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
return age == other.age && Objects.equals(name, other.name);
}
}