Java:RemoveAll(Collection c)返回false

时间:2017-12-04 12:22:07

标签: java list collections removeall

在我的java代码中,我有两个arrayList一个是assignedRiders,另一个是nearestRiders,我想从nearestRiders列表中删除元素,如果assignedRiders列表中也存在{1}},为此,我使用了以下行,但是当我运行它时,即使它们具有相同的元素,它也会返回false

代码

List<User> nearestRiders=new ArrayList<User>();
List<User> assignedRiders=new ArrayList<User>();
nearestRiders=riderLocationRepo.findNearestRiderList(orderRequest.getLatitudeShop(),
                    orderRequest.getLongitudeShop());
assignedRiders=orderAlredayAssigned();
Boolean dataChanhged=nearestRiders.removeAll(assignedRiders);

2 个答案:

答案 0 :(得分:0)

你可以这样做:

for(User u : nearestRiders){
assignedRRiders.remove(u)}

答案 1 :(得分:0)

如果这些列表中的对象具有相同的值,则它们不一定相等。

removeAll的源代码

public boolean removeAll(Collection<?> c) {
    boolean modified = false;
    Iterator<?> e = iterator();
    while (e.hasNext()) {
        if (c.contains(e.next())) {
            e.remove();
            modified = true;
        }
    }
    return modified;
}

调用contains,调用equalTo。这意味着您可以在要删除的对象的类中覆盖equalTo,以检查特定值,例如GUID。