java
1import java.util.ArrayList; 2 3public class Mail{ 4 public static void main(String[] args){ 5 ArrayList<String> list = new ArrayList<>(); 6 list.add("a"); 7 list.add("i"); 8 list.add("u"); 9 list.add("e"); 10 list.add("o"); 11 for (String str : list){ 12 if("u".equals(str)){ 13 list.remove(str); 14 } 15 } 16 17 for(String str : list){ 18 System.out.println(str); 19 } 20 } 21} 22
上記コードはConcurrentModificationExceptionが発生します。
しかし、下記のコードの場合は同例外が発生しません
どちらも拡張for文での読み出し最中にremoveメソッドを利用していますが、なぜこのような違いが出てくるのでしょうか。
java
1import java.util.ArrayList; 2 3public class Mail{ 4 public static void main(String[] args){ 5 ArrayList<String> list = new ArrayList<>(); 6 list.add("a"); 7 list.add("i"); 8 list.add("u"); 9 list.add("e"); 10 list.add("o"); 11 for (String str : list){ 12 if("u".equals(str)){ 13 list.remove(str); 14 }else{ 15 System.out.println(str); 16 } 17 } 18 } 19} 20
回答3件
あなたの回答
tips
プレビュー