元素的引用存放在集合之中,通过集合的方法可以对元素进行操作。 
通过集合的iterator()方法,把元素的引用取到迭代器里面去了。 
现在能操作元素的方式有2种。要么通过集合的方式操作元素,要么通过迭代器的方式操作元素。 
可是这两种方式操作的是同一组元素,所以会产生问题: 
迭代器正在取出操作,你又用到了集合的功能操作元素,就有可能产生安全隐患(并发访问)。 
  比如:你在取,我在加。你到底取不取我加的元素呢? 
因此不能对同一组元素进行多种同时操作。否则就有可能产生并发修改异常! 
---- 
这个问题该怎么解决呢? 
你要么用集合的方法,你要么用迭代器的方法。 
假如在迭代过程中就不用集合了。而是用迭代器。 
但是迭代器Iterator只有判断,取出,删除3个方法,没有对元素进行添加的方法。有局限性。 
如果想要其他的操作如添加,修改等,就需要使用Iterator的子接口ListIterator 
下面看个有关ListIterator的例子: 
- import java.util.ArrayList;
 
 - import java.util.ListIterator;
 
  
- public class ListDemo {
 
  
-         public static void sop(Object obj)
 
 -         {
 
 -                 System.out.println(obj);
 
 -         }
 
 -         
 
 -         public static void main(String[] args) 
 
 -         {
 
  
-                 //演示列表迭代器。
 
 -                 ArrayList al = new ArrayList();
 
  
-                 //添加元素
 
 -                 al.add("java01");
 
 -                 al.add("java02");
 
 -                 al.add("java03");
 
  
-                 sop(al);
 
 -                 
 
 -                 ListIterator li = al.listIterator();
 
  
-                 while(li.hasNext())
 
 -                 {
 
 -                         Object obj = li.next();
 
  
-                         if(obj.equals("java02"))
 
 -                                 li.add("java009");
 
 -                                 //li.set("java006");
 
  
 
-                 }
 
  
-                 sop(al);
 
 -         }
 
  
- }
 
 
  复制代码 
运行结果: 
[java01, java02, java03] 
[java01, java02, java009, java03] |