Iterator是什么?java Iterator遍历Collection集合元素详解

KLQ 2020-08-26 14:13:56 java常见问答 6296

你知道什么是Iterator(迭代器)吗?java Iterator遍历Collection集合元素又是怎样的呢?下面的文章将会为你做详细的解答。

首先来给你简单的介绍一下Iterator(迭代器),Iterator(迭代器)其实就是一个接口,作用就是遍历容器的所有元素。

它也是Java集合框架的成员,可是,它和Collection以及Map系列的集合是不一样的,Collection和Map系列集合主要用于盛装其他对象,Iterator主要用于遍历(也就是迭代访问)Collection集合中的元素。

Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。

Iterator接口里定义下面的4个方法:

下面是通过Iterator接口来遍历集合元素的示例:

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest
{
    public static void main(String[] args)
    {
        // 创建一个集合
        Collection objs = new HashSet();
        objs.add("A大1教程");
        objs.add("C大2教程");
        objs.add("F大3教程");
        // 调用forEach()方法遍历集合
        // 获取books集合对应的迭代器
        Iterator it = objs.iterator();
        while (it.hasNext())
        {
            // it.next()方法返回的数据类型是Object类型,因此需要强制类型转换
            String obj = (String) it.next();
            System.out.println(obj);
            if (obj.equals("C大2教程"))
            {
                // 从集合中删除上一次next()方法返回的元素
                it.remove();
            }
            // 对book变量赋值,不会改变集合元素本身
            obj = "C大4教程";
        }
        System.out.println(objs);
    }
}

Iterator仅用于遍历集合,假如,需要创建Iterator对象,那么就必须有一个被迭代的集合。

没有集合的Iterator没有存在的价值。

这里的话要注意一下了,Iterator必须依附于Collection对象,假如,有一个Iterator对象,那么必然有一个与之关联的Collection对象。

Iterator提供了两个方法来迭代访问Collection集合里的元素,并可通过remove()方法来删除集合中上一次next()方法返回的集合元素。

上面的程序,第24行代码对迭代变量obj进行赋值,但当再次输岀objs集合时,会看到集合里的元素没有任何改变。

所以当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何影响。

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

你还想了解更多的java相关知识吗?请继续关注奇Q工具网的常见问题栏目来进行了解和学习吧。

推荐阅读:

java使用Lambda表达式遍历Collection集合详解

java Collections类操作集合复制详解

java遍历Map集合的四种方式介绍