`

Java中iterator迭代器

    博客分类:
  • Java
阅读更多
1. Java中iterator迭代器

迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。
通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。

迭代器的使用主要有以下三个方面的注意事项:
1) 使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素。
2) 使用Iterator()的hasNext()方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。
3) 可以通过remove()方法删除迭代器返回的元素。

import java.util.HashSet;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        HashSet set = new HashSet();
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("d");
        set.add("e");
//      Iterator iter = set.iterator();
//      while(iter.hasNext()){
//          String value = (String)iter.next();
//          System.out.println(value);
//      }
        for(Iterator iter = set.iterator(); iter.hasNext(); ){
            String value = (String)iter.next();
            System.out.println(value);
        }
    }
}
运行结果:
d
e
b
c
a


2. iterator迭代器改变时发生ConcurrentModificationException异常

在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常
import java.util.ArrayList;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(4);
        list.add(3);
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==2) {
                list.remove(integer);
            } else {
                System.out.println(integer);    
            }
        }
    }
}
运行结果:
4
3
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at com.test.sort.InteratorTest.main(InteratorTest.java:13)

    
在使用arraylist的remove()方法就会出现问题,需要使用iterator.remove()方法就不会出现问题了
import java.util.ArrayList;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(4);
        list.add(3);
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==2) {
                // list.remove(integer);
                iterator.remove();
            } else {
                System.out.println(integer);    
            }
        }
    }
}
运行结果:
4
3


推荐博客:
https://blog.csdn.net/dove_knowledge/article/details/71023512
https://www.cnblogs.com/andy-zhou/p/5339683.html
分享到:
评论

相关推荐

    Iterator迭代器讲解

    ### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,它提供了遍历集合的基本方法。`Iterator`的主要作用是在不暴露集合内部结构的情况下,顺序访问集合中的...

    java Iterator迭代器的使用

    要使用`Iterator`,首先需要通过调用集合类的`iterator()`方法来获取迭代器实例。例如,对于ArrayList,代码可能如下所示: ```java ArrayList&lt;String&gt; list = new ArrayList(); // 添加元素... Iterator...

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

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

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

    Java语言中,使用Iterator迭代器遍历集合数据是一种常见的操作。本文主要介绍了Java使用Iterator迭代器遍历集合数据的方法,并结合实例形式分析了Java迭代器进行集合数据遍历的常见操作技巧。 Iterator迭代器是Java...

    详解Java中Iterator迭代器的用法

    迭代器模式是设计模式中的一种,它允许程序员访问聚合对象的元素,同时不暴露其内部表示。下面我们将深入探讨Java中`Iterator`的使用方法和特点。 ### 1. `Iterator`接口概述 `Iterator`接口位于`java.util`包中,...

    Java编程Iterator迭代器设计原理及实现代码示例

    Iterator迭代器是Java编程中的一种常见数据结构,用于遍历集合中的元素。在Java中,Iterator迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素。那么Iterator迭代器的设计原理是什么呢?为什么定义...

    自己实现java中Iterator(迭代器功能).docx

    ### 自己实现Java中的Iterator(迭代器功能) #### 背景与动机 在Java编程过程中,迭代器(`Iterator`)是一种常见的用于遍历集合元素的机制。它提供了访问集合元素的方式,而不暴露底层数据结构。对于学习或进阶...

    Java学习之Iterator(迭代器)的一般用法

    在深入探讨Java中Iterator(迭代器)的一般用法之前,我们先来理解一下迭代器在编程中的核心价值。迭代器是一种设计模式,其主要作用在于遍历集合中的元素,而无需开发者知晓集合的具体实现细节。这使得代码更加灵活、...

    java 迭代及迭代器的小例子

    在Java编程语言中,迭代是遍历集合对象(如数组、列表或集合)的重要机制,而迭代器(Iterator)则是实现这一机制的关键工具。这里,我们通过一个小例子来深入理解Java中的迭代和迭代器。 首先,我们需要了解什么是...

    【Java设计模式】(1)迭代器模式Iterator

    迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...

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

    // 如果计数器的值大于等于 2 就说明有重复的,就删除迭代器中当前的内容 if (count &gt;= 2) { it.remove(); } count = 0; } } } ``` 在上面的代码中,我们首先创建了一个 ArrayList 集合,并往其中添加了一些...

    hashMap利用iterator迭代器迭代元素方法

    在`HashMap`中,我们可以通过`entrySet()`、`keySet()`或`values()`方法获取迭代器,分别针对键值对、键或值进行迭代。 1. **使用`entrySet()`迭代**: 这是最常见的迭代方式,因为它允许同时访问键和值。首先,...

    如何实现java Iterator迭代器功能

    Java Iterator迭代器是Java集合框架中的一种重要组件,用于遍历集合中的元素。在Java中,Iterator接口是Java集合框架的核心组件之一,它提供了一种通用的方式来遍历集合中的元素。 在Java中,Iterator接口定义了三...

    java常用的集合类 Iterator迭代器的使用 foreach循环 泛型 Collections、Arrays工具

    常用的集合类Iterator迭代器的使用foreach循环 泛型Collections、Arrays工具

    【Java1迭代器】Java1迭代器

    在给定的文件内容中,介绍了如何在Java中使用迭代器,通过导入java.util.Iterator包,并使用iterator()方法获取迭代器实例,然后通过hasNext()和next()方法遍历集合并打印每个元素。这是一种典型的迭代器使用场景,...

    Map、Set、Iterator迭代详解

    ### Iterator迭代器详解 #### 1. Iterator接口介绍 `Iterator`接口提供了遍历`Collection`中元素的能力。它是一种设计模式,允许开发者遍历容器中的元素,而无需暴露容器底层的实现细节。 #### 2. Iterator接口的...

    java专题-迭代器

    在Java中,迭代器模式被广泛运用,尤其是在处理各种集合如`List`、`Set`、`Map`等时,通过迭代器可以更高效、更安全地遍历集合中的每个元素。本文将详细探讨迭代器模式的原理、结构以及在Java中的具体实现。 #### ...

    计算机后端-Java-Java核心基础-第24章 集合01 11. Iterator迭代器remove()的使用.avi

    计算机后端-Java-Java核心基础-第24章 集合01 11. Iterator迭代器remove()的使用.avi

    迭代器Iterator.txt

    根据提供的文件信息,我们可以深入探讨迭代器(Iterator)这一设计模式在Java中的应用与实现细节。迭代器模式是一种常用的设计模式,它允许我们以一种顺序访问集合对象的方式遍历其元素,而无需暴露该对象的内部表示...

    Iterator 迭代器

    Iterator 迭代器

Global site tag (gtag.js) - Google Analytics