原文网址:http://javag.iteye.com/blog/403097

方法一

  1. ArrayList<String> list = new ArrayList<String>();
  2. list.add("one");
  3. list.add("two");
  4. list.add("two");
  5. list.add("two");
  6. list.add("two");
  7. for(int i=0;i<list.size();i++){
  8. if(list.get(i).equals("two")){
  9. list.remove(i);
  10. }
  11. }
  12. System.out.println(list);

结果:

  1. [one, two, two]

方法二

  1. ArrayList<String> list = new ArrayList<String>();
  2. list.add("one");
  3. list.add("two");
  4. list.add("two");
  5. list.add("two");
  6. list.add("two");
  7. for(String s:list){
  8. if(s.equals("two")){
  9. list.remove(s);
  10. }
  11. }
  12. System.out.println(list);

结果:

  1. Exception in thread "main" java.util.ConcurrentModificationException
  2. at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
  3. at java.util.AbstractList$Itr.next(AbstractList.java:343)
  4. at Test.main(Test.java:22)

方法三:

  1. ArrayList<String> list = new ArrayList<String>();
  2. list.add("one");
  3. list.add("two");
  4. list.add("two");
  5. list.add("two");
  6. list.add("two");
  7. Iterator<String> iter = list.iterator();
  8. while(iter.hasNext()){
  9. String s = iter.next();
  10. if(s.equals("two")){
  11. iter.remove();
  12. }
  13. }
  14. System.out.println(list);

结果:

  1. [one]

结论:

删除还是用迭代器的比较好,其它的都会有问题.

【转】ArrayList遍历的同时删除----不错的更多相关文章

  1. ArrayList遍历的同时删除--- 删除还是用迭代器的比较好,其它的都会有问题.

    http://javag.iteye.com/blog/403097 ArrayList遍历的同时删除-- 删除还是用迭代器的比较好,其它的都会有问题.     博客分类: 随笔 Javathread ...

  2. 【原理探究】女朋友问我ArrayList遍历时删除元素的正确姿势是什么?

    简介 我们在项目开发过程中,经常会有需求需要删除ArrayList中的某个元素,而使用不正确的删除方式,就有可能抛出异常.或者在面试中,会遇到面试官询问遍历时如何正常删除元素.所以在本篇文章中,我们会 ...

  3. Java动态 遍历List 时删除List特征元素 异常问题 及解决方案总结

    首先.这是一个极其简单的问题,大牛可忽略.新手可能会遇到,Java中遍历某个List 时删除该List元素 会抛出异常. 这一个简单的问题再高手严重不值一提,但新手可能会比較困惑,用哪种方式能够安全有 ...

  4. 遍历List集合删除元素的出现报错

    遍历List集合删除元素的出现报错   遍历List集合删除元素的时候会发生索引越界异常或内容遍历不全等问题. 例子: List<String> al = new ArrayList< ...

  5. C#遍历List并删除某个或者几个元素的方法

    C#遍历List并删除某个或者几个元素的方法,你的第一反应使用什么方法实现呢?foreach? for? 如果是foreach,那么恭喜你,你答错了.如果你想到的是用for,那么你只是离成功进了一步. ...

  6. C++容器在遍历时的删除问题

    容器是非常便捷常用的,经常用容器来存储多条数据,然后对数据进行增删查改. 有时要在遍历的同时删除一条数据,但是这样删除的时候程序会导致程序崩溃. 这个问题在GCC 中不会出现,而在VS2008,VS2 ...

  7. Python的list循环遍历中,删除数据的正确方法

    在遍历list,删除符合条件的数据时,总是报异常,代码如下: num_list = [1, 2, 3, 4, 5] print(num_list) for i in range(len(num_lis ...

  8. python 遍历list并删除部分元素

    python 遍历list并删除部分元素https://blog.csdn.net/afgasdg/article/details/82844403有两个list,list_1 为0-9,list_2 ...

  9. ArrayList遍历的三种方式 array arrayList转换

    ArrayList遍历的三种方式 - 呵呵静 - 博客园 https://www.cnblogs.com/mjyung/p/6725182.html

随机推荐

  1. [Angular 2] A Simple Form in Angular 2

    When you create a Form in Angular 2, you can easily get all the values from the Form using ControlGr ...

  2. 【网络流#3】hdu 1532 - Dinic模板题

    输入为m,n表示m条边,n个结点 记下来m行,每行三个数,x,y,c表示x到y的边流量最大为c 这道题的模板来自于网络 http://blog.csdn.net/sprintfwater/articl ...

  3. 让sublime支持gbk常用编码

    Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦.不过Sublime Package Control所以供的插件可以让Subli ...

  4. WinAPI——模拟正弦波

    /*************************** * * 程序名称 : 模拟正弦波 * 作 者 : doodle777 * 版 本 : 1.1 * 日 期 : 2012-10-19 * 说 明 ...

  5. OC之字符串 NSString与NSMutableString

    一.NSString 不可变字符串的操作1)将字符串常量对象直接赋值给字符串引用 NSString *str1=@"hello"; 字符串对象的输出格式:NSLog(@" ...

  6. cocoapods出现Diff: /../Podfile.lock: No such file or directory错误

    第一种解决方法: 关闭Xcode,重新执行pod install,之后再重新打开Xcode运行. 第二种解决方法: 删除以下文件: xcworkspacePodfile.lockPods文件夹~/Li ...

  7. CocoaPods报错:The dependency `xxx` is not used in any concrete target

    官网是这样给推荐的: 在创建Podfile的时候,用这种格式使用, platform :ios, '8.0' use_frameworks! target 'MyApp' do pod 'AFNetw ...

  8. (一)Angularjs - 入门

    AngularJS进行应用开发的一个重要的思维模式: 从构造声明式界面入手 ng-app: 这个指定定义并且关联了使用angularJS的HTML页面部分 ng-model: 这个指定定义并绑定Ang ...

  9. C++拾遗(十)类与动态内存分配(2)

    静态成员函数 声明时包含关键字static.注意以下两点: 1.使用静态成员函数时不能通过对象或者this指针来调用,只能使用类名+作用域解析符来调用. 2.静态成员函数只能使用静态成员. new操作 ...

  10. python的hashlib模块

    # -*- coding: utf-8 -*- """python 的MD5 sha1 模块""" import hashlib #md5的 ...