【发布时间】:2021-03-05 01:24:04
【问题描述】:
我想用set来删除重复的对象,UserEntity是这样的:
public class UserEntity {
String name;
int age;
@Override
public String toString() {
return "UserEntity [name=" + name + ", age=" + age + "]";
}
public UserEntity(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o1) {
UserEntity user=(UserEntity) o1;
return this.age==user.age && user.name.equals(this.name);
}
}
然后我创建了一个集合来添加两个名为 alex 的用户,他们的年龄是 20 岁,但是集合中有两个用户:
UserEntity user1 = new UserEntity("alex", 20);
UserEntity user2 = new UserEntity("alex", 20);
System.out.println(user1.equals(user2));
Set<UserEntity> set=new HashSet<>();
set.add(user1);
set.add(user2);
System.out.println(set.size());
结果是:
true
2
为什么集合不删除重复的对象?
【问题讨论】:
-
您还需要覆盖
Object#hashCode。