在我的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);
答案 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。