`

巧妙使用Iterator 解决集合在循环中删除元素

 
阅读更多
在程序开发中经常会使用到泛型,在循环中非常好用,但也有一定的弊端,如以下代码:
List<string> list = new ArrayList<string>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
for(String s : list){
.....
                        }
在以上代码中使用会非常简单,如果在循环中使用list.remove(s);则编译器会报:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at com.taobao.test.ListTest.main(ListTest.java:18)
在集合使用中是不允许直接删除其中的数据,可以巧妙的使用Iterator解决这个问题。
Iterator it =list.iterator();
while(it.hasNext()){
if("aaa".equals(it.next())){
it.remove();
}

}</string></string>
0
1
分享到:
评论

相关推荐

    使用Iterator接口遍历集合元素

    2. 当使用 Iterator 来迭代访问 Collection 集合元素时,Collection 集合里的元素不能被改变,只有通过 Iterator 的 remove 方法来删除上一次 next 方法返回的集合元素才可以。否则将会引发 java.util....

    Java集合使用 Iterator 删除元素

    Java集合使用Iterator删除元素是Java编程中的一种常见操作。Iterator是Java集合框架中的一种接口,用于遍历集合中的元素。在使用Iterator遍历集合时,如果需要删除某些元素,就需要使用Iterator的remove方法,而不能...

    java集合类arraylist循环中删除特定元素的方法.docx

    ### Java集合类ArrayList循环中删除特定元素的方法 #### 背景与问题 在Java编程中,`ArrayList`是开发者最常使用的集合类之一。它实现了`List`接口,提供了动态数组的功能。在实际开发过程中,经常需要遍历`...

    JAVA中的Iterator的用法

    `Iterator`的`remove()`方法允许开发者在遍历过程中删除当前元素。需要注意的是,该方法只能在调用`next()`之后立即调用,否则会抛出`IllegalStateException`。 ```java Iterator<String> iterator = list.iterator...

    在list集合中输入元素,去除重复的元素并输出

    根据给定文件的信息,本文将详细介绍如何在Java的List集合中去除重复元素的三种方法:使用for循环、使用迭代器以及利用HashSet的特性。 ### 一、使用for循环去除重复元素 这种方法的基本思想是通过双重循环来遍历...

    一个使用iterator和json技术的实例

    在`for-each`循环中,可以通过`iterator()`方法获取迭代器,然后逐个处理元素。 接下来,我们来看看JSON部分。JSON是一种轻量级的数据表示格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,通常使用...

    Iterator遍历过程中list删除导致异常

    在Java编程中,`Iterator`是...在遍历集合时,务必避免在迭代器之外直接修改集合,或者在迭代过程中使用`Iterator`的`remove()`方法。同时,合理利用Java 8的流API可以有效避免这类异常,提高代码的可读性和安全性。

    iterator 遍历循环代码

    在给定的代码片段中,我们看到的是使用Struts2标签库中的`<s:iterator>`标签来遍历一个名为`userlist`的集合对象。具体代码如下: ```xml <s:iterator value="userlist" id="uid"> <td><s:property value="#uid....

    遍历并批量删除容器中元素出现ConcurrentModificationException原因及处置

    但是,如果你在循环内部直接修改集合(比如删除元素),而不是通过迭代器的`remove()`方法,那么迭代器将无法跟踪这些变化,从而导致异常。 - 在多线程环境下,如果多个线程同时对同一个集合进行迭代和修改,由于...

    使用Iterator模式将对象转成String.docx

    在上述描述中,提到了如何使用Iterator模式来解决在JSOM、XML、Java bean等对象操作时遇到的问题。通常,访问者模式用于访问并操作对象结构中的元素,但它在控制回调方面存在局限性,无法方便地跳过某些特定分支。...

    Java如何使用Iterator迭代器删除集合重复选项

    Java 中使用 Iterator 迭代器删除集合重复选项是非常重要的知识点,以下是对该知识点的详细解释。 Iterator 迭代器的介绍 Iterator 迭代器是 Java 中的一种设计模式,用于遍历集合中的元素。它提供了一种方式来...

    forEach中为什么不能删除元素解决方案.pdf

    本文将探讨在使用`forEach`循环中遇到无法删除元素的问题,并提供几种解决方案。 首先,了解为什么在`forEach`循环中不能直接修改集合是很重要的。Java集合框架中的`forEach`循环是基于迭代器的`hasNext()`和`next...

    迭代大师的修炼之道:Java中Iterator与增强for循环的深度解析

    例如,在一个循环中读取集合,而在另一个循环中修改集合。 **2. 示例代码** ```java import java.util.ArrayList; import java.util.List; public class CombinedUsageExample { public static void main(String...

    Iterator接口

    Iterator接口和ListIterator接口的使用可以带来很多便利,例如,使用Iterator接口可以遍历集合中的元素,而不管集合的具体实现类型,同时也可以使用ListIterator接口来控制迭代器的行为,例如,添加或删除元素。...

    Iterator迭代器讲解

    `Iterator`的主要作用是在不暴露集合内部结构的情况下,顺序访问集合中的元素。这使得开发者可以在不知道集合内部结构的情况下对集合进行操作,从而提高了代码的灵活性和可维护性。 #### 二、Iterator的优点 1. **...

    C++使用iterator的例子

    在C++编程语言中,迭代器(Iterator)是一种设计模式,它提供了一种方法来遍历容器(如数组、向量、链表等)中的元素,而无需暴露其底层实现细节。迭代器充当了容器与代码之间的接口,使得程序员可以方便地访问容器...

    java中关于集合的操作

    泛型允许在集合中声明和使用特定类型的元素,提高代码安全性和可读性。 7. **并发集合**: Java提供了线程安全的集合实现,如`ConcurrentHashMap`, `CopyOnWriteArrayList`等,用于多线程环境。 8. **集合的遍历...

    struts2中iterator 标签的使用详解

    在Struts2框架中,`<s:iterator>`标签是一个非常强大的工具,用于在JSP页面上循环遍历集合数据,如列表(List)、数组、Map等。它允许开发者以一种动态且灵活的方式展示来自后端的数据,从而极大地提高了开发效率和...

    Java使用Iterator迭代器遍历集合数据的方法小结

    在循环体中,我们使用hasNext()方法判断是否存在下一个元素,如果存在,则调用next()方法获取元素,并将其强制转换为int类型,最后输出结果。 2、使用迭代器遍历Set集合 在Java中,Set是一种不允许重复元素的集合...

    Java Collection集合iterator方法解析

    2. 使用 Iterator 接口中的方法 hasNext 来判断集合中还有没有下一个元素。 3. 使用 Iterator 接口中的方法 next 来取出集合中的下一个元素。 4. 重复第二步和第三步直到集合中的所有元素都被遍历完毕。 迭代器代码...

Global site tag (gtag.js) - Google Analytics