gpt4 book ai didi

java - ArrayList removeAll() 不删除对象

转载 作者:行者123 更新时间:2023-12-01 16:39:00 31 4
gpt4 key购买 nike

我有成员类的简单ArrayList:

ArrayList<Member> mGroupMembers = new ArrayList<>();
ArrayList<Member> mFriends = new ArrayList<>();

成员(member)等级:

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包含所有用户的好友。我只想从 friend 列表中删除群组成员(如果存在):

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 - ArrayList removeAll() 不删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61902143/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com