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 }