`

java list的正确remove。避免报java.util.ConcurrentModificationException

 
阅读更多
list的remove首先要从迭代器中remove
list的正确的remove的办法:

Iterator<StoreFriendLink >  it=friendlinks.iterator();
                   while(it.hasNext()){
                        StoreFriendLink next=it.next();
                         if(next.getId().equals(id)){
                              it.remove();
                              friendlinks.remove(next);
                        }
                  }
0
1
分享到:
评论

相关推荐

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

    java 集合并发操作出现的异常ConcurrentModificationException

    在Java编程中,`ConcurrentModificationException`是一个常见的运行时异常,主要出现在多线程环境下对集合类(如List、Set、Map等)进行并发修改时。然而,这个异常不仅限于多线程环境,即使在单线程中,如果在遍历...

    Java语言的Util类详细介绍

    Java语言的Util类详细介绍 Java语言的Util类是Java开发中非常重要的一部分,它提供了一系列的类来实现基本的数据结构,如线性表、链表等。这些类均在java.util包中。 Collection接口是Java中最基本的集合接口,一...

    阿里巴巴Java开发手册(终极版).zip

    3. **线程安全**:对多线程环境下的代码要特别注意,避免数据竞争和死锁,合理使用`synchronized`关键字或`java.util.concurrent`包中的工具类。 三、设计模式 1. **单例模式**:推荐使用静态内部类实现的懒汉式...

    详解Java 集合类 List 的那些坑

    Arrays.asList 方法返回的 List 并不是我们常用的 java.util.ArrayList,而是 Arrays 的静态内部类 java.util.Arrays.ArrayList,该类继承自抽象类 java.util.AbstractList,但没有实现 add 方法,默认抛出 java....

    Java程序员容易犯的10个错误

    正确做法是使用迭代器,但使用增强for循环(for-each)配合`list.remove()`会抛出`ConcurrentModificationException`。正确的迭代器移除方式如下: ```java Iterator&lt;String&gt; iter = list.iterator(); while ...

    java 迭代及迭代器的小例子

    例如,在java.util.concurrent包中的ConcurrentLinkedQueue等线程安全的集合类,它们的迭代器是弱一致性(weakly consistent)的,这意味着迭代器不会抛出ConcurrentModificationException,但可能不反映对集合的...

    Java源码分析:深入探讨Iterator模式

    在Java编程语言中,集合框架(`java.util`包)提供了多种容器类来存储对象,如`List`、`Set`和`Map`等。为了遍历这些容器中的元素,Java引入了迭代器模式(Iterator Pattern),这是一种常用的设计模式,它提供了一...

    java Iterator迭代器的使用

    4. **示例代码:MyIterator.java** 我们可以创建一个简单的程序,演示如何使用`Iterator`遍历ArrayList: ```java import java.util.ArrayList; import java.util.Iterator; public class MyIterator { ...

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

    import java.util.List; import java.util.Arrays; public class EnhancedForLoopExample { public static void main(String[] args) { List&lt;String&gt; names = Arrays.asList("Ada Lovelace", "Alan Turing", ...

    Java程序员们最常犯的10个错误.docx

    在`for-each`循环中删除元素会引发`ConcurrentModificationException`,因为编译器自动调用`.next()`在`.remove()`之后,而迭代器要求`.next()`在`.remove()`之前调用。 4. **Hashtable与HashMap的区别**: 这...

    内置迭代器的linked list例题

    在Java编程语言中,LinkedList是一种实现List接口的数据结构,它以链表的形式存储元素。而内置迭代器(Iterator)是Java集合框架的重要组成部分,用于遍历集合中的元素,特别是对于LinkedList这种非连续内存存储的...

    java基础 集合-22-迭代器设计模式

    在多线程环境中,如果不正确地使用迭代器,可能会出现并发修改异常(`ConcurrentModificationException`)。为了解决这个问题,Java提供了`ConcurrentSkipListMap`和`CopyOnWriteArrayList`等线程安全的集合,它们的...

    java-大数据基础面试思考.pdf

    Java BlockingQueue是并发集合util包的一部分,它支持在检索或存储元素时等待直到元素变得可用或空间变得可用。这种队列在多线程环境下特别有用,它允许生产者线程和消费者线程可以安全地进行通信,而不需要担心线程...

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

    在Java编程中,遍历并删除List集合是一个常见的操作,但在实际编程中,如果不使用正确的方法,可能会导致`java.util.ConcurrentModificationException`异常。本文主要针对这个面试题,详细讲解如何在遍历List的同时...

    阿里巴巴java开发手册1.40版

    - 避免在循环中调用`add`、`remove`等改变集合大小的操作,可能导致`ConcurrentModificationException`。 6. **并发编程**: - 使用并发集合类如`ConcurrentHashMap`、`CopyOnWriteArrayList`等,而非普通的同步...

    常见数据结构的Java实现

    1. `List`接口:`List`是`java.util`包下的一个接口,它继承自`Collection`接口,并添加了对有序元素序列的支持。`List`接口规定了添加、删除和访问元素的方法,如`add()`, `remove()`, 和 `get()`。 2. `...

    JAVA初学教程教你学会JAVA4

    当迭代器检测到列表在迭代过程中发生了改变时,它会抛出`ConcurrentModificationException`异常,以避免潜在的数据不一致性问题。 这种机制通过维护一个名为`modCount`的域来实现,每次列表发生结构性变化时(如...

    java集合代码

    ArrayList是Java中`java.util`包下的一个类,它是List接口的一个具体实现。ArrayList基于动态数组,允许我们在列表的任何位置插入和删除元素,提供了快速访问元素的能力。其内部实现通过扩容机制来保证在添加元素时...

    Java实训 Java高级应用编程 第2章 集合(共33页).ppt

    - 在使用集合时,可能会遇到`NullPointerException`、`ConcurrentModificationException`等异常,需要注意正确处理。 在实际编程中,理解并熟练运用这些集合类和接口,能够有效地组织和操作数据,是Java开发人员...

Global site tag (gtag.js) - Google Analytics