我试着收集到一个列表中的所有从我的数据库具有相同的名称,以便在位置,即时通讯使用该做的事:如何在我的数据库中按名称过滤位置?
public static List<Location> searchRepe(List<Location>ls){
List<Location>res=new ArrayList<Location>();
for(Location l:ls){
ls.remove(l);
if(ls.stream().anyMatch(x>x.getProvinceName().equals(l.getProvinceName()))){
res.add(l);}
ls.add(l);
}
return res;
}
错误:异常线程“main” java.util.ConcurrentModificationException
我先删除列表的位置,然后检查是否有另一个具有相同名称的位置。在检查了位置名称是否在列表中后,我将它添加到我的res列表中。在任何情况下,我会始终保持原始列表相同,因为在检查后,我将元素读入列表。我知道错误是由于我在每次迭代中删除并添加的,但如果在每次迭代中删除并添加相同的元素,则列表的大小将始终相同。
有人能告诉我一个更好的方法来做到这一点?如果有可能使用java8
第方法,其中基于事件的计数的所有元素的伟大工程提供了我想要的清单与所有具有位置他们的省名是共同的。第二种方法只是根据其省份名称收集出现多次的地点。 非常感谢你Neonailol –