黑马程序员技术交流社区

标题: 在迭代集合的过程中,不能对集合进行增删操作 [打印本页]

作者: 微笑=.一瞬间    时间: 2014-4-23 16:15
标题: 在迭代集合的过程中,不能对集合进行增删操作
package com.itheima;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
*
* 4、 一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,
* 删除其中所有值为"abc"的字符串元素,请用代码实现。
*
*/
public class Test4 {
        public static void main(String[] args) {
                List<String> aList=new ArrayList<String>();
                //向aList集合中添加元素
                aList.add("fetadf");
                aList.add("abc");
                aList.add("feffads");
                aList.add("jiasfja");
                aList.add("abc");
               
                System.out.println("删除前的aList集合中的元素"+aList);
               
                //创建迭代器,迭代aList集合中元素 如果元素值为"abc" 就删除该元素
                Iterator<String> it=aList.listIterator();
                while(it.hasNext()){
                        String value=it.next();
                        if(value.equals("abc"))
                                it.remove();       
                }
                System.out.println("删除后aList集合中的元素"+aList);
        }

}
在迭代集合的过程中,不能对集合进行增删操作(会报并发访问异常);可以用迭代器的方法进行操作(子类listIterator:有增删的方法)
为什么用 Iterator迭代器 进行删除不报错呢?





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