java – ArrayList removeAll()不删除对象
发布时间:2020-12-15 02:00:59 所属栏目:Java 来源:网络整理
导读:我有成员类的简单ArrayLists: ArrayListMember mGroupMembers = new ArrayList();ArrayListMember mFriends = new ArrayList(); 会员类: public class Member { private String userUID; private String userName; public String getUserUID() { return us
我有成员类的简单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列表中. 为什么这不起作用? 解决方法
如何确定2名成员是平等的?我猜他们是否有相同的ID,你认为它们是相同的,但java希望它们在内存中是完全相同的引用,可能不是这种情况.要纠正这个问题,你可以覆盖equals函数,让它在id相等时返回:
public class Member { //.. @Override public boolean equals(Object anObject) { if (!(anObject instanceof Member)) { return false; } Member otherMember = (Member)anObject; return otherMember.getUserUID().equals(getUserUID()); } } 此外,当您覆盖.equals时,建议还要覆盖hashCode,以便对象在散列函数(如Set或Map)中也能正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Eclipse Virgo vs Apache Servicemix
- OIO在java中意味着什么?
- java – 如何在forEach中访问lambda之外的对象?
- java – 你如何单元测试自定义断言?
- Java-JFrame-swing嵌套浏览器的具体步骤
- 深入理解static关键字
- java – PHP与Hadoop / MapReduce实现中的其他语言以及云中
- JSP Response.containsHeader()方法:判断指定名字的HTTP文
- java – 社交时https://www.apis.google.com/的主机验证失败
- Lambda表达式实现List集合的自定义排序