1 // 遍历一个list
2 public static void printList(List<String> list){
3 for (String string : list) {
4 list.add("eeee"); // 运行错误
5 System.out.println(string);
6 }
7 System.out.println("遍历中: "+list);
8 }
9 异常信息如下:
10 Exception in thread "main" java.util.ConcurrentModificationException
11 模拟基础班看过的场景:
12 public static void main(String[] args) {
13 List<String> list = new ArrayList<String>();
14 list.add("aaaa");
15 list.add("bbbb");
16 list.add("cccc");
17 list.add("dddd");
18
19 Iterator<String> it = list.iterator();
20 while(it.hasNext()){
21 list.add("yyyy");
22 String str = it.next();
23 System.out.println(str);
24 }
25 }
26 运行异常:
27 Exception in thread "main" java.util.ConcurrentModificationException
28 总结;
29 在使用增强for循环进行集合的迭代的时候其实默认使用的是迭代器,因此在循环中不能使用集合的引用变量直接操作集合,避免导致多线程并发访问的安全性异常。