1) 设计一个Person类,在该类中定义两个变量name和age 2) 在Person类中重写hashCode()和equals()方法 3) 编写类Example10,在该类中定义一个HashSet集合 4) 将Person对象存入HashSet集合中,其中含有重复的Person对象 5) 遍历HashSet集合中的元素,观察结果是否含有重复的对象
时间: 2024-03-01 07:54:56 浏览: 97
C# Equals 和 GetHashCode 方法重写
好的,以下是代码实现:
```
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
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 Objects.hash(name, age);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Example10 {
public static void main(String[] args) {
Set<Person> set = new HashSet<>();
Person person1 = new Person("张三", 20);
Person person2 = new Person("李四", 30);
Person person3 = new Person("张三", 20);
set.add(person1);
set.add(person2);
set.add(person3);
for (Person person : set) {
System.out.println(person);
}
}
}
```
解释一下代码的实现过程:
1. 首先定义了一个 `Person` 类,该类中有两个属性 `name` 和 `age`;
2. 重写了 `hashCode()` 和 `equals()` 方法,用于判断两个 `Person` 对象是否相等;
3. 在 `Example10` 类中定义了一个 `HashSet` 集合;
4. 创建了三个 `Person` 对象,其中前两个是不同的对象,第三个对象与第一个对象属性相同;
5. 将这三个 `Person` 对象存入 `HashSet` 集合中;
6. 遍历 `HashSet` 集合中的元素,并输出每个元素的信息,观察结果是否含有重复的对象。
希望能帮到你!
阅读全文