我正在尝试删除arraylists列表中的arraylist但它似乎没有工作。在我的代码的上下文中,我有多个路由在arraylist中。每条路线都是地方的arraylist。
public static void removeBadRoutes(ArrayList<ArrayList<Place>> routes, Expedition e) {
for(int i = 0; i < routes.size(); i++) {
if(!isGoodRoute(routes.get(i), e)) {
routes.remove(routes.get(i));
}
}
}
我也尝试过routes.remove(i)没有做任何事情。 编辑:通过&#34;不工作&#34;我的意思是没有任何东西被删除,它仍然显示应该根据我的条件删除的路线。
答案 0 :(得分:2)
要在迭代它时从Collection
中删除元素,您应该使用其Iterator
;否则,你最终会遇到ConcurrentModificationException
(我希望你指的是&#34;不工作&#34;):
public static void removeBadRoutes(ArrayList<ArrayList<Place>> routes, Expedition e) {
for (Iterator<ArrayList<Place>> it = routes.iterator(); it.hasNext();) {
if (!isGoodRoute(it.next(), e)) {
it.remove();
}
}
}
此外,使用Java 8,您可以使用List#removeIf
:
public static void removeBadRoutes(ArrayList<ArrayList<Place>> routes, Expedition e) {
routes.removeIf(route -> !isGoodRoute(route, e));
}