3、在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。要求如下: 1) Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals()方法返回true。
时间: 2023-12-20 21:03:49 浏览: 118
可以按照以下步骤实现:
1. 创建Person类,包含name和age属性,并重写hashCode()方法和equals()方法,针对name属性进行比较。具体实现如下:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写hashCode()方法,针对name属性进行比较
@Override
public int hashCode() {
return Objects.hash(name);
}
// 重写equals()方法,针对name属性进行比较
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
2. 创建HashSet集合,并向其中添加三个Person对象,注意要保证姓名相同的人只添加一次。具体实现如下:
```java
public static void main(String[] args) {
HashSet<Person> set = new HashSet<>();
Person person1 = new Person("张三", 20);
Person person2 = new Person("李四", 25);
Person person3 = new Person("张三", 30);
set.add(person1);
set.add(person2);
set.add(person3);
System.out.println(set);
}
```
输出结果为:
```
[Person{name='李四', age=25}, Person{name='张三', age=20}]
```
可以看到,HashSet集合中只添加了两个Person对象,姓名相同的人被视为同一个人,被禁止重复添加。
阅读全文