【发布时间】:2016-06-27 21:12:18
【问题描述】:
我有成员类的简单ArrayLists:
ArrayList<Member> mGroupMembers = new ArrayList<>();
ArrayList<Member> mFriends = new ArrayList<>();
会员等级:
public class Member {
private String userUID;
private String userName;
public String getUserUID() {
return userUID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setUserUID(String userUID) {
this.userUID = userUID;
}
}
朋友的 ArrayList 包含所有用户的朋友。我只是想做的就是从朋友列表中删除组成员,如果存在的话:
mFriends.removeAll(mGroupMembers);
但它对mFriends 列表没有任何作用...
查看日志语句,该朋友确实出现在mGroupMember 列表中。
为什么这不起作用?
【问题讨论】:
-
由于我在
Member类中看不到覆盖equals方法,我怀疑您的列表不包含相同的对象,而只包含相似的对象(具有相似的状态)。 -
您的问题中没有包含足够的信息,但猜测您的列表中有不同的(但等效的)
Member对象。正如 Pshemo 所说,由于您尚未为Member定义equals,因此它将使用Object的equals,而对于等效的Member对象则不是这样。您需要覆盖equals(因此也需要覆盖hashCode)。