A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ackage com.itheima;
import java.util.ArrayList;
import java.util.List;
/*
* 第2题:一个ArrayList对象aList中存有若干个字符串元素,
* 现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,
* 请用代码实现。*/
public class Test2 {
public static void main(String[] args) {
  // TODO Auto-generated method stub
  
      List<String> alist=new ArrayList<String>();
      alist.add("abc");
      alist.add("abd");
      alist.add("abe");
      alist.add("abc");
      alist.add("abc");
      alist.add("cba");
      //System.out.println(alist);
      
     for(Object element:alist){
       if("abc".equals(element)){
        alist.remove(element);
       }
      }
      System.out.println(alist);
}
}
/*Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at com.itheima.Test2.main(Test2.java:28)*/

5 个回复

倒序浏览
本帖最后由 丁绍然 于 2014-6-8 19:55 编辑

貌似这个不能用foreach
        for(int x=0; x<al.size(); x++){  
            if("abc".equals(al.get(x))){  
                al.remove(x);  
                x--;  
            }我明白了,equals没问题,就是remove不行,因为element不是list里面的元素了。。是移除不了的
回复 使用道具 举报
高级for相当于迭代器,唯一的区别就是:它可以删除元素。
你别想了
回复 使用道具 举报
list集合想删除 只能用迭代器来操作 或者用list特有的迭代器 还能增加和修改
回复 使用道具 举报
还可以用ListIterator迭代器来做,不过是迭代器本身的删除功能与集合无关。
回复 使用道具 举报
谢谢你得分享,真的太赞了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马