1 package day5.lesson2;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 /*
8 2.4 并发修改异常
9 出现的原因
10 迭代器遍历的过程中,通过集合对象修改了集合中的元素,造成了迭代器获取元素中判断预期修改值和实际
11 修改值不一致,则会出现:ConcurrentModificationException
12 解决的方案
13 用for循环遍历,然后用集合对象做对应的操作即可
14 */
15 public class ListDemo3 {
16 public static void main(String[] args) {
17 List<String> list = new ArrayList<>();
18 list.add("hello");
19 list.add("world");
20 list.add("java");
21
22 /*Iterator<String> it = list.iterator();
23 while (it.hasNext()){
24 String s = it.next(); //java.util.ConcurrentModificationException
25 if(s.equals("world")){
26 list.add("C++");
27 }
28 }*/
29
30 for(int i=0; i<list.size(); i++){
31 String s = list.get(i); //ok
32 if(s.equals("world")){
33 list.add("C++");
34 }
35 }
36
37 System.out.println(list);
38 }
39 }