在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加。要求如下:
Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode方法的返回值相同,equals()方法返回true.
package com;
import java.util.*;
class Person{
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
// 重写toString()方法
public String toString(){
return name+":"+age;
}
// 重写hashCode()方法
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object obj) {
if(this == obj){
return true;
}
if(!(obj instanceof Person)){
return false;
}
Person other = (Person) obj;
boolean b = this.name.equals(other.name);
return b;
}
}
public class T {
public static void main(String[] args) {
HashSet<Person> set = new HashSet<Person>();
Person p1 = new Person("张三",11);
Person p2 = new Person("李四",22);
Person p3 = new Person("张三",33);
set.add(p1);
set.add(p2);
set.add(p3);
System.out.println(set);
}
}