在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。要求如下:
Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对 Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals()方法返回true。
package text;
import java.util.HashSet;
public class Text4 {
public static void main(String[] args) {
HashSet<Person> set = new HashSet<Person>();
Person p1 = new Person("马超", 18);
Person p2 = new Person("马超", 120);
Person p3 = new Person("李白", 18);
Person p4 = new Person("王维", 30);
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
for(Person p : set) {
System.out.println(p);
}
}
}
class Person{
private String name;
private int age;
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;
}
public String toString() {
return getName()+" "+getAge();
}
public int hashCode() {
return name.hashCode();
}
public boolean equals (Object obj) {
Person p = (Person) obj ;
return this.name==p.name ? true : false ;
}
}