本帖最后由 funneies 于 2013-8-16 10:11 编辑
List集合在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生并发访问异常(ConcurrentModificationException异常)。
所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator的方法是有限的,只能对元素进行判断,取出,删除操作。
如果想要其他的操作如:添加,修改等,就需要使用其 子接口ListIterator,该接口只能通过List集合的ListIterator接口获取。- public static void main(String []args){
-
- ArrayList al = new ArrayList();
-
- al.add("java01");
- al.add("java02");
- al.add("java03");
- al.add("java04");
- al.add("java04");
- ListIterator it = al.listIterator();
- sop(al);
- while(it.hasNext()){//正向遍历列表
- Object obj = it.next();
- if(obj.equals("java02")){
- it.add("java08");
- }
- }
- sop(al);
- sop(it.hasPrevious());
- while(it.hasPrevious()){//反向遍历列表
- Object obj = it.previous();
- if(obj.equals("java02")){
- it.add("java08");
- }
-
- }
- sop(al);
- /*
- //在迭代过程中,准备添加或者删除元素
-
- Iterator it = al.iterator();
- sop(al);
- while(it.hasNext()){
- Object obj = it.next();
- if(obj.equals("java02")){//不能同时用迭代器和集合操作方法操作集合。
- // al.add("java03"); //并发访问异常。ConcurrentModificationException
- it.remove();
-
- }
- sop(obj);
- }
- sop("al:"+al);
- */
-
- }
复制代码 |