请编写程序完成以下要求: (1)定义Person类,其中包括name和age两个成员变量,代表对象的姓名和年龄属性。 (2)在Person类中重写从其父类继承的hashCode()和equals()方法。hashCode()方法返回Person类对象的name属性的哈希代码值;equals()方法用于比较两个Person类对象,若name属性值相同,则方法返回true,否则返回false。 (3)在HashSet集合中添加四个Person类对象,把姓名相同的人当做同一个人,禁止重复添加。请使用JDK8提供的forEach()方法或forEachRemaining()方法,或使用Iterator迭代器实现对集合中元素的遍历操作,要求每个元素独占一行输出。
时间: 2024-03-20 07:38:47 浏览: 86
以下是实现要求的Java程序代码:
```java
import java.util.HashSet;
import java.util.Iterator;
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 instanceof Person) {
Person person = (Person) obj;
return this.name.equals(person.getName());
}
return false;
}
}
public class Test {
public static void main(String[] args) {
HashSet<Person> set = new HashSet<>();
set.add(new Person("Tom", 20));
set.add(new Person("Jerry", 18));
set.add(new Person("Tom", 22));
set.add(new Person("Lucy", 21));
// 使用迭代器遍历集合元素
Iterator<Person> iter = set.iterator();
while (iter.hasNext()) {
System.out.println(iter.next().getName());
}
}
}
```
在上面的程序中,我们定义了一个Person类,其中包括name和age两个成员变量。在Person类中重写了从其父类继承的hashCode()和equals()方法,用来实现对集合中元素的去重操作。
在main()方法中,我们创建了一个HashSet集合,并向其中添加了四个Person类对象。由于其中有两个人的姓名相同,因此HashSet集合会把这两个人当做同一个人,禁止重复添加。
最后,我们使用迭代器遍历HashSet集合中的元素,并将每个元素的姓名属性独占一行输出。
阅读全文