使用迭代器遍历集合时,同时在删除集合中的数据,程序就会出现并发修改异常的错误。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class _Exception {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("12");list.add("23");list.add("31");list.add("14");list.add("54");list.add("56");list.add("17");
// System.out.println(list);//需求:找出集合中全部带"1"的字,并从集合中删除Iterator<String> it = list.iterator();while(it.hasNext()){String s = it.next();if(s.contains("1")){
// list.remove(s); 并发修改异常错误it.remove(); //删除迭代器当前遍历到的数据,每删除一个数据后,相当于在底层做了i--}}//解决方案://使用for循环遍历
// for (int i = 0; i < list.size(); i++) {
// String s = list.get(i);
// if(s.contains("1")){
// list.remove(s);
// i--;
// }
// }System.out.println(list);}
}
注意:使用增强for或者lambda也会引起异常的错误并且无法解决。