`
stenlylee
  • 浏览: 260266 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

循环遍历List时,对当前对象进行删除ConcurrentModificationException

 
阅读更多

经常要根据条件判断删除List中的某些对象,实现方法都是用循环遍历List,然后用个IF之类的判断来remove

 

但是如果用for(Object o : list),并且list.remove(o)的方式来删除,会报java.util.ConcurrentModificationException

 

用for(int i=0; i<value; i++)的方式也不行

 

必须要用Iterator来遍历,并且iter.remove()才可以

分享到:
评论

相关推荐

    HashMap和List遍历方法及如何遍历删除元素总结

    使用for循环遍历List是一种常见的方法,但是这种方法存在问题。当删除某个元素后,List的大小发生了变化,而索引也在变化,所以会导致漏掉某些元素。 2. 增强for循环 增强for循环是Java语法糖的一种体现,但是使用...

    java中循环遍历删除List和Set集合中元素的方法(推荐)

    在Java编程中,遍历并删除集合(如List或Set)中的元素是一项常见的操作,但如果不正确地执行,可能会导致`ConcurrentModificationException`异常。这个异常通常在尝试修改正在迭代的集合时出现,因为Java的集合迭代...

    java中List对象集合的遍历方法(三个)

    遍历List对象集合是日常开发中常见的操作,这里我们将详细介绍三种遍历List的方法,并探讨它们的性能特点和适用场景。 ### 第一种:迭代器(Iterator)遍历 ```java for (Iterator&lt;A&gt; it = list.iterator(); it....

    Java list利用遍历进行删除操作3种方法解析

    使用增强 for 循环遍历 list 时,需要注意避免 ConcurrentModificationException 异常。下面是一个常见的错误示例: ```java for (String x : list) { if (x.equals("del")) { list.remove(x); } } ``` 这个...

    java集合类遍历的同时如何进行删除操作.docx

    当我们尝试在循环遍历集合(如ArrayList)时删除元素,Java的默认行为是不允许的,因为这违反了迭代器的协定。迭代器通常需要在删除元素时通过自身的`remove()`方法来确保内部状态的一致性。如果直接调用集合的`...

    【Java面试题】List如何一边遍历,一边删除?

    本文主要针对这个面试题,详细讲解如何在遍历List的同时安全地删除元素。 1. **新手常犯的错误** 大多数初学者可能会尝试使用增强型for循环(foreach)来遍历并删除元素,如以下代码所示: ```java for (String ...

    java-遍历map

    - 在遍历`Map`时,如果在遍历过程中尝试修改`Map`(例如添加或删除元素),可能会引发`ConcurrentModificationException`异常。因此,在遍历的同时不要修改`Map`。 - 使用流API遍历时,虽然代码更简洁,但性能上可能...

    Java中List集合的遍历实例详解

    在实际编程中,遍历List集合是常见的需求,用于访问和处理集合中的每个元素。本篇文章将详细介绍Java中List集合的三种遍历方式及其特点。 1. **迭代器(Iterator)遍历** 迭代器是Java集合框架提供的标准遍历接口...

    正确遍历删除List中的元素方法(推荐)

    在Java编程中,遍历并删除List中的元素是一项常见的操作,但如果不小心处理,可能会遇到错误,如`ConcurrentModificationException`。以下是几种常见的遍历删除List元素的方法及其注意事项: 1. **通过增强的for...

    Java 实例 - List 循环移动元素源代码+详细指导教程.zip

    本教程将深入讲解如何在Java中对List进行循环移动元素的操作,通过源代码实例和详细指导来帮助你掌握这一技能。 首先,我们需要理解Java中的List接口,它继承自Collection接口,常见的实现类有ArrayList和...

    Java如何在List或Map遍历过程中删除元素

    使用For-each循环遍历List时,不能直接在循环体中调用`remove()`方法,因为这会导致`ConcurrentModificationException`。这是因为For-each循环内部使用的是迭代器,而迭代器不支持在遍历过程中直接修改集合。示例...

    如何遍历一个java集合

    在面试中,除了基本的遍历方式,还可能考察一些高级话题,如并发遍历(ConcurrentModificationException)、性能优化(如避免在循环中调用`size()`方法)以及如何处理null元素等。同时,理解不同集合类的底层实现和...

    java中循环删除list中元素的方法总结

    这里我们将详细讨论几种不同的循环遍历和删除元素的方法,以及它们的适用场景。 1. **常规for循环**: ```java for (int i = 0; i &lt; list.size(); i++) { if (list.get(i).equals("del")) { list.remove(i); }...

    java中List的用法.pdf

    - 另外,也展示了如何使用传统的for循环遍历List。 总之,理解并熟练使用List接口及其实现类是Java编程中的基础技能。选择ArrayList还是LinkedList取决于具体的应用场景,如需高效访问,选择ArrayList;如需高效...

    Java ArrayList遍历修改代码实例解析

    在遍历 ArrayList 时,不能使用传统的 for 循环来删除元素,因为这将导致 ConcurrentModificationException 异常。相反,我们可以使用以下三种方法来遍历和删除 ArrayList 元素: ### 1. 使用迭代器(Iterator) ...

    详解Java 集合类 List 的那些坑

    在直接遍历 List 集合元素时增加、删除元素会报错,例如使用 for 循环遍历 List 时删除元素,会抛出 ConcurrentModificationException 异常。解决方法是使用 Iterator 迭代器遍历 List,并使用 Iterator 的 remove ...

    day04集合.pdf

    为了避免这种异常,推荐使用`for`循环遍历集合,并通过集合对象进行相应的操作。 ### 5. 列表迭代器 (ListIterator) #### 5.1 ListIterator介绍 `ListIterator`是`List`集合特有的迭代器,通过调用`List`的`...

    13.foreach循环_java_

    在多线程环境下,使用`foreach`循环遍历集合时,如果集合在遍历过程中被修改,可能会触发`ConcurrentModificationException`。为了安全,要么使用`Collections.synchronizedXXX`或`java.util.concurrent`包中的集合...

    Java源码解析ArrayList及ConcurrentModificationException

    另一个需要注意的操作是迭代器的使用,当我们使用for-each循环遍历ArrayList时,实际上是调用了ArrayList的`Itr`迭代器。如果在遍历过程中修改了集合,如添加、删除元素,就会抛出`ConcurrentModificationException`...

    经典Java集合笔试选择题10道.doc

    在ArrayList中删除特定元素时,需要注意迭代器的使用,以避免ConcurrentModificationException。A选项从后向前删除元素,避免了这个问题,因此A是正确的。B选项从前往后删除元素时,可能会导致索引超出范围。C选项...

Global site tag (gtag.js) - Google Analytics