在HashSet集合中添加三个Person对象,把id相同的人当做同一个人,禁止重复添加。 提示:Person类中定义id、name和age属性,重写hashCode()方法和equals()方法,针对Person类的id属性进行比较,如果id相同,hashCode()方法的返回值相同,equals方法返回true。
时间: 2023-06-02 08:06:57 浏览: 69
好的,让我来回答你的问题。针对你的要求,我可以给你一个HashSet集合添加Person对象的示例代码,代码如下:
```
import java.util.HashSet;
public class Test {
public static void main(String[] args) {
HashSet<Person> set = new HashSet<>();
Person p1 = new Person("001", "张三", 20);
Person p2 = new Person("002", "李四", 21);
Person p3 = new Person("001", "王五", 22);
set.add(p1);
set.add(p2);
set.add(p3);
for (Person p : set) {
System.out.println(p);
}
}
}
class Person {
private String id;
private String name;
private int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Person)) {
return false;
}
Person p = (Person) obj;
return this.id.equals(p.id);
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
```
在这个示例代码中,我们新建了一个HashSet集合,并且向其中添加了三个Person对象,其中p1和p3的id属性相同,因此会被当做同一个对象处理,只有两个对象会被加入到集合中。hashCode()方法和equals()方法的重写也确保了相同id的Person对象被判定为相同对象。
希望这个示例代码能够回答你的问题。如果你有其他技术方面的问题,都可以向我提出哦!