public class Student {
private String name;
private int 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;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String toString() {//重写toString方法,输出age和name的值
return "name:" + name + " " + "age:" + age + " ";
}
public int hashCode() {//重写hashCode
int num1 = this.name.hashCode();
int num2 = this.age;
return num1+num2;//返回值是name的hash值与age的和
}
public boolean equals(Object obj) {//重写equals()方法
if(this==obj) {//判断对象的name和age是否相同,相同则返回true不同返回false
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;
}
}
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<Student> hs = new HashSet<Student>();//一个HashSet<Student>对象hs
Student s1 = new Student("张三",18);//添加多个Student对象
Student s2 = new Student("李四",19);//两个Student对象相等
Student s3 = new Student("李四",19);
hs.add(s1);
hs.add(s2);
hs.add(s3);
System.out.println(hs.toString());
System.out.println(s3.hashCode());
System.out.println(s2.equals(s3));
}
}