在hashset集合中添加三个person对象,把姓名相同的人当作是同一个人,禁止重复添加用Java编译
时间: 2024-12-21 16:24:35 浏览: 11
在Java中,如果你想在HashSet中添加Person对象并避免重复添加名字符合的人,你可以创建一个自定义的equals()和hashCode()方法来实现这个需求。HashSet依赖于这两个方法来进行元素的唯一性和快速查找。
首先,定义一个Person类,包括一个不可变的姓名属性:
```java
public class Person {
private final String name;
public Person(String name) {
this.name = 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 name.equals(person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
// 其他需要的方法...
}
```
然后在主程序中,可以使用HashSet来存储Person对象,因为equals()和hashCode()已经被覆盖了:
```java
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<Person> uniquePeople = new HashSet<>();
Person person1 = new Person("John");
Person person2 = new Person("John"); // 姓名相同
Person person3 = new Person("Jane");
// 添加到HashSet中,由于equals()判断,name相同的只会被添加一次
uniquePeople.add(person1);
uniquePeople.add(person2); // 这里不会再次添加,因为已经存在了
uniquePeople.add(person3);
// 输出集合中的唯一人员
for (Person p : uniquePeople) {
System.out.println(p.getName());
}
}
}
```
阅读全文