現在、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-loop の代わりに反復子を使用して同期)。メソッド全体を同期しても例外が発生します。
例外は次の行で発生しています。
Restaurant restaurant = it.next();
わかりません。この行ではリストを操作していません。なぜこれが起こっているのですか、どうすれば修正できますか?