黑马程序员技术交流社区

标题: 在迭代的过程中能否添加元素 [打印本页]

作者: 耿渊博    时间: 2014-3-31 16:33
标题: 在迭代的过程中能否添加元素
本帖最后由 耿渊博 于 2014-4-2 21:43 编辑

在迭代的过程中我想修改元素,编译没有报错,但是运行的时候报错,为什么?
  1. package com.Thread;

  2. import java.util.*;

  3. public class ListDemo {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                
  7.                 ArrayList a1 = new ArrayList();
  8.                
  9.                 //添加元素
  10.                 a1.add("java01");
  11.                 a1.add("java02");
  12.                 a1.add("java03");
  13.                 a1.add("java04");
  14.                
  15.                 //在迭代的过程中添加元素
  16.                
  17.                 Iterator it = a1.iterator();
  18.                
  19.                 while(it.hasNext()){
  20.                         
  21.                         Object obj = it.next();
  22.                         if(obj.equals("java02")){
  23.                                 a1.add("java007");
  24.                         }
  25.                         sop("obj= "+obj);
  26.                 }
  27.                
  28.         }

  29.         
  30.         public static void sop(Object obj){
  31.                 System.out.println(obj);
  32.         }
  33. }
复制代码


作者: osully    时间: 2014-3-31 16:34
Iterator  迭代只能remove
listIterator 可以 增删改查  强大无比
作者: lazy_xia    时间: 2014-3-31 16:35
你好!Iterator 不能修改数据的 不过你换成ArrayList 的ListIterator 这个可以用来迭代并修改数据 你可以试下
作者: 一诺千金    时间: 2014-3-31 16:41
Iterator  迭代过程中不能对元素进行曾改查,原因是会发生操作冲突,他会不知道自己要操作的下一个元素是什么了只能remove
List特有的迭代器ListIterator 可以 增删改查  
作者: papercup    时间: 2014-3-31 16:43
迭代器和集合不可以并行操作,在操作迭代器的时候不能操作集合。只能用迭代其中的方法进行操作。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2