java集合迭代器

java集合迭代器

采用迭代器遍历方式遍历集合,如果要在遍历过程中添加或者删除元素,如下代码所示:

 1 package MyIterator;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6 
 7 public class Test {
 8     public static void main(String[] args) {
 9         //创建集合类
10         Collection <String>c=new ArrayList <String>();
11         c.add("hello");
12         c.add("word");
13         c.add("java");
14         c.add("hahaha");
15         //获取迭代器对象
16         Iterator<String> it=c.iterator();
17         while(it.hasNext()) {
18             String s=it.next();
19             if(s.equals("java")) c.add("这样做不对");
20             System.out.println(s);
21         }
22     }
23 }

运行抛出并发修改异常:Exception in thread "main" java.util.ConcurrentModificationException

解决方案:使用迭代器进行修改

 1 package MyIterator;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import java.util.ListIterator;
 5 
 6 public class Test {
 7     public static void main(String[] args) {
 8         //创建集合类
 9         //Collection <String>c=new ArrayList <String>();
10         List <String>c=new ArrayList <String>();
11         c.add("hello");
12         c.add("word");
13         c.add("java");
14         c.add("hahaha");
15         //获取迭代器对象
16         ListIterator<String> lit=c.listIterator();
17         while(lit.hasNext()) {
18             String s=lit.next();
19             if(s.equals("java")) 
20                 lit.add("这就对了");
21         }
22         System.out.println(c);
23     }
24 }