http://javag.iteye.com/blog/403097

ArrayList遍历的同时删除--

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

 
 

博客分类:

方法一

  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遍历时删除元素的正确姿势是什么?

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

  2. 【转】ArrayList遍历的同时删除----不错

    原文网址:http://javag.iteye.com/blog/403097 方法一 ArrayList<String> list = new ArrayList<String&g ...

  3. 遍历List集合,删除符合条件的元素

    List集合的遍历有三种方式:增强for循环,普通for循环,Iterator迭代器遍历 如果只是对集合进行遍历,以上三种循环都可正常遍历: (1)增强For循环遍历List集合 List<St ...

  4. Java遍历List的时候删除item

    参考:http://blog.csdn.net/longyulu/article/details/8315068 在Java中有时候我们会需要对List里面的符合某种业务的数据进行删除,但是如果不了解 ...

  5. 遍历List过程中删除元素的正确做法(转)

    遍历List过程中删除元素的正确做法   public class ListRemoveTest {     3 public static void main(String[] args) { 4 ...

  6. 【Java】集合(List、Set)遍历、判断、删除元素时的小陷阱

    开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下 ...

  7. 对JAVA集合进行遍历删除时务必要用迭代器

    java集合遍历删除的方法: 1.当然这种情况也是容易解决,实现方式就是讲遍历与移除操作分离,即在遍历的过程中,将需要移除的数据存放在另外一个集合当中,遍历结束之后,统一移除. 2.使用Iterato ...

  8. ArrayList在foreach正常迭代删除不报错的原因

    一.背景 在以前的随笔中说道过ArrayList的foreach迭代删除的问题:ArrayList迭代过程删除问题 按照以前的说法,在ArrayList中通过foreach迭代删除会抛异常:java. ...

  9. STL中vector的赋值,遍历,查找,删除,自定义排序——sort,push_back,find,erase

    今天学习网络编程,那个程序中利用了STL中的sort,push_back,erase,自己没有接触过,今天学习一下,写了一个简单的学习程序.编译环境是VC6.0         这个程序使用了vect ...

随机推荐

  1. AS3.0杂记——Dictionary、Object与Array

    来源:http://blog.csdn.net/m_leonwang/article/details/8811829 Object.Array与Dictionary都是关联数组,就是用“键”来索引存储 ...

  2. 2.Thread中的实例方法

    (转自:http://www.cnblogs.com/xrq730/p/4851233.html) Thread类中的方法调用方式: 1.this.XXX 这种调用方式表示的线程是:线程实例本身 2. ...

  3. NSTimer 销毁问题 和 iOS中控制器的释放问题

    俗话说的好,前人栽树后人乘凉,最近看了很多博文,不少博文提到了NSTimer的销毁问题, 之前我都没怎么注意,现在对照着文章一一实践发现坑还真不少.下面是我读到的几篇博文分享给大家 @啸笑天的NSTi ...

  4. 项目管理实践【四】Bug跟踪管理【Bug Trace and Management】

    首先,向大家说一声抱歉,这篇文章耽误了这么久才和大家见面.至于Bug的跟踪和管理的必要性和好处,我就不在这里说了,下面介绍几款Bug跟踪和管理的软件. 一.BugNET BugNET是一个非常优秀的开 ...

  5. [转载] Winform中几种好用的Grid Control

    转自 博客园 http://www.cnblogs.com/peterzb/archive/2009/05/29/1491781.html 1.DataGridView  .net 2.0框架自带的网 ...

  6. 十五、oracle 约束

    一.维护数据的完整性数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则,在oracle中,数据完整性可以使用约束.触发器.应用程序(过程.函数)三种方法来实现,在这三种方法中,因为约束易于维护,并 ...

  7. jquety选择器

    基本选择器 1.#id        根据id的属性值来获取元素 2.TagName     根据标签名来获取元素 3.selector1,selector2    匹配列表中的选择器(就是可以匹配多 ...

  8. Java Web开发: Tomcat中部署项目的三种方法

    web开发,在tomcat中部署项目的方法: 可以参考http://m.blog.csdn.net/blog/u012516903/15741727 定义$CATALINA_HOME指的是Tomcat ...

  9. VS中的快捷键快速格式化代码,使好看,整齐

    在VC2005中,快捷键是Ctrl + K, Ctrl + F, 这是一个组合键,即先按Ctrl + K, 这时候编辑器会等待下一个按键动作,此时再按Ctrl + F, 即可以格式化代码了,当然,也可 ...

  10. CCF考试真题题解

    CCF考试认证:题解参考博客http://blog.csdn.net/u014578266/article/details/45221841 问题描述 试题编号: - 试题名称: 图像旋转 时间限制: ...