同時変更例外処理
問題:
反復処理中に同時変更例外が発生する同時変更が存在しないように見える場合でも、リスト
実装:
提供されたコードは、リストとリスト反復子を同時に作成します。次に、反復処理中にリストに要素を追加し、例外が発生します。
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<>(); ListIterator<String> it = s.listIterator(); for (String a : args) s.add(a); if (it.hasNext()) String item = it.next(); System.out.println(s); } }
解決策:
例外を回避するには、コードを次のように変更します。
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<>(); for(String a : args) s.add(a); ListIterator<String> it = s.listIterator(); if(it.hasNext()) { String item = it.next(); } System.out.println(s); } }
この変更されたコードでは、すべての要素がリストに追加された後にリスト反復子が作成されます。これにより、イテレータの作成と使用の間にリストが変更されなくなります。
以上がリストの反復および変更時に ConcurrentModificationException を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。