【发布时间】:2022-06-14 16:09:31
【问题描述】:
如何避免在 Set 中插入重复元素?如果我有:
Set<User> user=new HashSet<>();
User user1=new User("11","Mark",null,"1");
User user2=new User("11","Mark",null,"1");
User user3=new User("12","Helen",null,"2");
user.add(user1);
user.add(user2);
Log.d("main_activity_user", "la dimensione è" +String.valueOf(user.size()));
Adn 用户类是:
public class User {
public String uid;
public String name;
public String pversion;
public String upicture;
public User(String uid,
String name,
String upicture, String pversion ){
this.uid=uid;
this.name=name;
this.upicture=upicture;
this.pversion=pversion;
}
public String get_uid(){
return uid;
}
public String get_name(){
return name;
}
public String get_pversion(){
return pversion;
}
public String get_upicture(){
return upicture;
}
@Override
public boolean equals(Object obj) {
User newObj = (User)obj;
if (this.get_uid().equals( newObj.get_uid()))
return true;
else
return false;
}
}
现在该集合还存储重复项并打印 3 个元素而不是 2 个。为什么? 没用过set类,看不懂,所以每次使用Set类,都要重写Equals方法?为什么?该类不会自动删除重复项吗?
【问题讨论】:
-
您是否覆盖了
hashCode()?
标签: java collections duplicates set