java
1import java.util.ArrayList; 2 3public class Main { 4 public static void main(String[] args) { 5 ArrayList<String> list = new ArrayList<>(); 6 list.add("A"); 7 list.add("B"); 8 list.add("C"); 9 for (String str : list) { 10 if ("B".equals(str)) { 11 list.remove(str); 12 } else { 13 System.out.println(str); 14 } 15 } 16 } 17}
java
1import java.util.ArrayList; 2 3public class Main { 4 public static void main(String[] args) { 5 ArrayList<String> list = new ArrayList<>(); 6 list.add("A"); 7 list.add("B"); 8 list.add("C"); 9 list.add("D"); 10 list.add("E"); 11 for (String str : list) { 12 if ("C".equals(str)) { 13 list.remove(str); 14 } 15 } 16 for (String str : list) { 17 System.out.println(str); 18 } 19 } 20} 21
上のコードはAとだけ表示され、下のコードは
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819) at java.util.ArrayList$Itr.next(ArrayList.java:791) at Main.main(Main.java:11)
ArrayListがスレッドセーフなクラスでないことは関係していると思いますが、それ以上のことがよくわかりません。
上下のコードのどこのせいで、何故このような結果の相違が生まれたのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/12 15:38