`
wbj0110
  • 浏览: 1609433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

请您先登录,才能继续操作

ConcurrentModificationException and a HashMap

    博客分类:
  • Java
阅读更多
Iterator it = map.entrySet().iterator();while(it.hasNext()){Entry item = it.next();
   map.remove(item.getKey());}

这种方法会出现错误

 

正确的删除办法是

Iterator it = map.entrySet().iterator();

   while (it.hasNext())

   {

      Entry item = it.next();

      it.remove();

   }

 

 

 

分享到:
评论

相关推荐

    Java HashMap 如何正确遍历并删除元素的方法小结

    这段代码将抛出 `java.util.ConcurrentModificationException` 异常,因为在遍历 HashMap 的元素过程中删除了当前所在元素,下一个待访问的元素的指针也由此丢失了。 2. 正确的删除方法 正确的删除方法是使用迭代...

    Java面试题集合部分.docx

    9. **并发安全的HashMap**:在并发环境下,使用`ConcurrentHashMap`,JDK1.7中基于锁分段技术,JDK1.8中改为使用CAS(Compare and Swap)无锁算法和分段锁,进一步提高了并发性能。 10. **ConcurrentHashMap的实现*...

    ConcurrentHashMap:今天在看Spring源码的时候发现了一个并发安全的hashmap,自己就手写实现了一下

    除了分段锁,`ConcurrentHashMap`还使用了许多非阻塞算法,如CAS(Compare and Swap)操作,这些算法使得在不锁定整个数据结构的情况下,也能保证数据的一致性。例如,在插入、删除和更新操作中,`...

    聊聊并发(4)深入分析ConcurrentHashMapJ

    2. **非阻塞算法**:`ConcurrentHashMap`使用了CAS(Compare and Swap)操作来实现无锁编程。CAS是一种原子操作,可以在不使用锁的情况下更新变量值。在`ConcurrentHashMap`中,插入、删除和查找操作都是基于CAS操作...

    【美团】Java 岗 154 道面试题1

    3. **快速失败 (fail-fast) 和安全失败 (fail-safe)**:快速失败是当集合在迭代过程中被修改时抛出`ConcurrentModificationException`;安全失败是指迭代器会返回旧的集合副本,允许在不抛异常的情况下修改集合。 4...

    Java面经.适用于校招

    - 快速失败机制检测到另一个线程在修改集合时会立即抛出ConcurrentModificationException。 - 安全失败机制则是通过创建集合的副本来进行迭代。 三.锁 Java提供了多种机制来控制多线程对共享资源的并发访问。 3.1...

    Thread基础知识点笔记总结

    在高并发的情况下使用 ArrayList 的时候,会出现 ConcurrentModificationException 异常。HashSet 底层是 HashMap。 5. 锁 Java 中有两种锁:公平锁和非公平锁。公平锁在队列直接排队,非公平锁先抢锁,抢不到再...

    ConcurrentHashMap共18页.pdf.zip

    与传统集合类的迭代器不同,ConcurrentHashMap 的迭代器是非阻塞的,即使在遍历过程中有其他线程修改了映射表,迭代器也不会抛出 ConcurrentModificationException 异常,而是能够正确地反映修改后的状态。...

    JUC线程锁框架

    例如,ConcurrentHashMap在并发环境下比传统HashMap表现更优,而CopyOnWriteArrayList在迭代时不会抛出ConcurrentModificationException,而是采用写时复制策略保证线程安全。 4. **线程池(ExecutorService)** ...

    09、并发容器(Map、List、Set)实战及其原理

    - **CopyOnWriteArrayList**:适用于读多写少的场景,写操作时会创建新列表并复制原列表中的元素,避免了并发修改异常(`ConcurrentModificationException`)。 4. **Set接口与并发容器**: - **HashSet**和**...

    集合类编程题(2),使用迭代器(2).zip

    Java集合框架包括接口如`List`, `Set`, `Map`等,以及它们的实现类如`ArrayList`, `HashSet`, `HashMap`等。这些接口定义了操作集合的一系列方法,而实现类则提供了具体的实现。 在Java中,`Iterator`接口是用于...

    超级有影响力霸气的Java面试题大全文档

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空...

Global site tag (gtag.js) - Google Analytics