`
幽灵线程
  • 浏览: 79092 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

删除集合元素时务必使用迭代器

    博客分类:
  • java
 
阅读更多

遍历集合删除元素

1、绝对错误的方式
List list = xxxService.getAll();
for(Object obj : list ){
     list.remove(obj );  //此方式必然导致ConcurrentModificationException
}
2、使用Iterator重构,但不够彻底,出现同样的异常,却难以排查。
 
List list = xxxService.getAll();
for(Iterator objIter =  list.iterate();obj.hasNext(); ){
     list.remove(obj );  //此方式也导致ConcurrentModificationException
}
 
3、使用迭代子删除方式

List list = xxxService.getAll();
for(Iterator objIter =  list.iterate();obj.hasNext(); ){
     objIter .remove();  //终于尼玛搞定
}
 


分享到:
评论

相关推荐

    65丨迭代器模式(上):相比直接遍历集合数据,使用迭代器有哪些优势?1

    2. **封装性**:迭代器隐藏了集合的内部结构,用户无需了解集合是如何存储和管理元素的,只需知道如何使用迭代器即可。 3. **支持多种遍历策略**:迭代器模式使得添加新的遍历方式变得容易,例如反向遍历、只读遍历...

    java的List集合和列表迭代器的使用

    java的List集合和列表迭代器的使用,简单的操作,里面附代码,简单易懂。 使用typora可以打开,其他打开会有格式问题,

    迭代器模式Demo

    迭代器模式是一种设计模式,它在软件工程中扮演着重要的角色,特别是在处理集合或容器类对象的遍历操作时。这种模式提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,...

    c++迭代器失效问题

    - 使用`std::vector`时,尽量避免在迭代期间插入或删除元素,除非你知道迭代器不会受到影响。 理解并妥善处理迭代器失效是编写稳定且高效的C++代码的关键。熟悉这些知识点并能在实践中灵活运用,将有助于提升C++...

    java迭代器模式实现正反向遍历

    在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...

    设计模式之迭代器模式

    1. **迭代器(Iterator)**:迭代器接口,定义了遍历元素的方法,如`hasNext()`用于检查是否还有更多元素,`next()`用于获取下一个元素,以及可能存在的`remove()`方法用于删除当前元素。 2. **聚合对象(Colllection)*...

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

    通过迭代器,我们可以方便地遍历集合,添加、删除或修改元素,同时保持了集合的封装性。 1. **迭代器接口** Java中的`Iterator`接口位于`java.util`包下,它是所有迭代器的基类。它提供了三个核心方法: - `...

    基于列表实现的元素迭代器算法(java算法源码)

    * 基于列表实现的元素迭代器 */ package dsa; public class IteratorElement implements Iterator { private List list;//列表 private Position nextPosition;//当前(下一个)元素的位置 //默认构造方法 ...

    java 迭代及迭代器的小例子

    通过使用迭代器,我们可以有效地遍历和操作集合中的元素,同时,Java的并发库提供了适应多线程环境的迭代器实现,以满足各种编程需求。这个小例子展示了如何在实际编程中使用迭代器,帮助我们更好地理解和运用这些...

    66丨迭代器模式(中):遍历集合的同时,为什么不能增删集合元素?1

    这是因为迭代器在调用`remove()`时,会更新自身的状态以反映元素已被删除的事实,避免了遍历过程中的混乱。因此,正确的做法是: ```java while (iterator.hasNext()) { String current = iterator.next(); // ...

    设计模式之迭代器模式(Iterator)

    迭代器模式是软件设计模式中的一种行为模式,它在编程中扮演着重要的角色,尤其是在处理集合数据时。迭代器模式的核心思想是提供一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式使得用户可以在不...

    迭代器模式demo

    2. **聚合对象接口**:定义了添加、删除元素以及创建迭代器的方法,如`add()`、`remove()`和`createIterator()`。 3. **具体迭代器实现**:根据聚合对象的内部结构实现迭代逻辑,可能使用了链表、数组或其他数据结构...

    23钟设计模式之迭代器模式模式

    迭代器负责遍历聚合对象中的元素,聚合对象提供了元素的集合,而客户端则使用迭代器来遍历聚合对象中的元素。 迭代器模式的优点在于: 1. 便于遍历聚合对象中的元素:迭代器模式提供了一种简单的方式来遍历聚合...

    设计模式-迭代器模式(讲解及其实现代码)

    例如,Java集合框架大量使用了迭代器模式,使得我们可以方便地遍历集合中的元素,无论是ArrayList、LinkedList还是HashSet,都可以通过迭代器进行操作。 下面是一个简单的Java迭代器模式示例: ```java // 聚合...

    迭代器的用法

    当多个线程同时访问一个集合的迭代器时,必须注意线程安全性。如果集合不是线程安全的,或者迭代器没有特别设计为线程安全,那么在并发环境下使用迭代器可能引发问题。如果需要在多线程环境中安全地遍历集合,可以...

    迭代器模式代码示例

    迭代器模式是一种设计模式,属于行为设计...总的来说,迭代器模式是实现遍历集合元素的一种灵活且高效的方式,尤其在需要多种遍历策略时。在实际开发中,了解并熟练运用迭代器模式,能够提高代码的可读性和可维护性。

    迭代器Iterator.txt

    迭代器模式是一种常用的设计模式,它允许我们以一种顺序访问集合对象的方式遍历其元素,而无需暴露该对象的内部表示。接下来,我们将详细讨论这一模式的关键概念、结构及其在Java集合框架中的具体实现。 ### 一、...

    C++ STL 迭代器 入门

    - **初始化**:通常使用容器成员函数`begin()`获取指向容器第一个元素的迭代器,使用`end()`获取指向容器最后一个元素后一个位置的迭代器。 - **解引用**:使用`*`运算符获取迭代器所指向的元素。 - **递增/递减**:...

    迭代器的例子

    在编程领域,迭代器(Iterator)是一个至关重要的概念,它为访问聚合对象(如数组、集合等)中的元素提供了一种统一的接口。迭代器模式是设计模式中的一种行为模式,它允许我们顺序访问集合对象的元素,而无需暴露其...

Global site tag (gtag.js) - Google Analytics