我目前遇到一个问题,需要遍历ArrayList。我已经阅读了这里的几篇文章,但似乎没有解决我的问题。以下是我的代码:
//restaurants contains a list of all restaurants and i want to filter them
List<Restaurant> newList = new ArrayList<Restaurant>();
List<Restaurant> allRestaurants = new ArrayList<Restaurant>(restaurants);
if (query != null && query.length() > 0 && !query.equals("*")) {
synchronized (allRestaurants) {
for (Iterator<Restaurant> it = allRestaurants.iterator(); it
.hasNext();) {
Restaurant restaurant = it.next();
if (restaurant.getCity().contains(query)) {
synchronized (newList) {
newList.add(restaurant);
}
} else {
newList = allRestaurants;
}
}
}
这段代码是我根据在这里读到的几个想法进行修改的(使用同步锁,使用迭代器而不是for-each循环)。我甚至已经对整个方法进行了同步,但仍然遇到了异常。
异常发生在以下行:
Restaurant restaurant = it.next();
我不理解这个问题。在这行代码中,我没有对列表进行任何操作。为什么会出现这种情况,我该如何解决?