3、在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。要求如下: 1) Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals()方法返回true。
时间: 2024-02-01 20:14:55 浏览: 28
下面是示例代码:
```java
import java.util.HashSet;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof Person)) {
return false;
}
Person other = (Person) obj;
return this.name.equals(other.name);
}
public static void main(String[] args) {
// 创建HashSet集合
HashSet<Person> set = new HashSet<Person>();
// 添加三个Person对象
set.add(new Person("Tom", 20));
set.add(new Person("Jerry", 18));
set.add(new Person("Tom", 25));
// 打印集合中的元素个数
System.out.println(set.size()); // 输出结果为2,因为两个名字为Tom的Person对象被视为同一个对象,只有一个被添加进了集合。
}
}
```
在上述代码中,我们在Person类中重写了hashCode()和equals()方法,以便HashSet集合可以根据Person对象的name属性来判断是否是同一个对象。在main()方法中,我们创建了一个HashSet集合,然后添加了三个Person对象,其中有两个名字为Tom的Person对象。由于这两个对象的名字相同,HashSet会把它们视为同一个对象,只有一个被添加进了集合,因此最终集合中只有两个元素。