16、在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。
提示:
1)Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
提示:
1)Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
import java.util.*;
public class Test02 {
public static void main(String[] args) {
HashSet hashSet = new HashSet();
Person p1 = new Person("Jack",25);
Person p2 = new Person("Rose",23);
Person p3 = new Person("Jack",27);
hashSet.add(p1);
hashSet.add(p2);
hashSet.add(p3);
for(Object obj:hashSet){
Person p=(Person)obj;
System.out.println(p.name+":"+p.age);
}
}
}
class Person{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
Person other = (Person) obj;
return other.name.equals(this.name);
}
}