(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-19 19:46:25 浏览: 46
Java-面向对象设计-类和对象.docx
以下是Java代码实现:
```java
import java.util.HashSet;
import java.util.Iterator;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
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<Person> set = new HashSet<>();
set.add(new Person("Tom", 20));
set.add(new Person("Jerry", 25));
set.add(new Person("Tom", 22));
set.add(new Person("Lucy", 18));
// 使用forEach()方法遍历集合
set.forEach(p -> System.out.println(p.name + " " + p.age));
// 使用Iterator迭代器遍历集合
Iterator<Person> it = set.iterator();
while (it.hasNext()) {
Person p = it.next();
System.out.println(p.name + " " + p.age);
}
}
}
```
输出结果为:
```
Tom 20
Lucy 18
Jerry 25
Tom 22
Tom 20
Lucy 18
Jerry 25
Tom 22
```
阅读全文