编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Java的Iterator接口

在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK 专门提供了一个接口Iterator。Iterator接口也是Java集合框架中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。


接下来通过一个案例来学习如何使用Iterator迭代集合中的元素,如例所示。

import java.util.ArrayList;
import java.util.Iterator;
public class Example {
    public static void main(String[] args) {
        ArrayList list = new ArrayList(); // 创建ArrayList 集合
        list.add("data_1"); // 向该集合中添加字符串
        list.add("data_2");
        list.add("data_3");
        list.add("data_4");
        Iterator it = list.iterator(); // 获取Iterator 对象
        while (it.hasNext()) { // 判断ArrayList 集合中是否存在下一个元素
            Object obj = it.next(); // 取出ArrayList 集合中的元素
            System.out.println(obj);
        }
    }
}

运行结果:

data_1
data_2
data_3
data_4

例中演示的是Iterator遍历集合的整个过程。当遍历元素时,首先通过调用ArrayList集合的iterator()方法获得迭代器对象,然后使用hasNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。需要注意的是,在通过next()方法获取元素时,必须保证要获取的元素存在,否则,会抛出NoSuchElementException异常。

Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,为了让初学者能更好地理解迭代器的工作原理,接下来通过一个图例来演示Iterator对象迭代元素的过程,如图所示。


Iterator对象迭代元素的过程

图中,在调用Iterator的next()方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next()方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next()方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext()方法返回false,表示到达了集合的末尾,终止对元素的遍历。需要特别说明的是,当通过迭代器获取ArrayList集合中的元素时,都会将这些元素当作Object类型来看待,如果想得到特定类型的元素,则需要进行强制类型转换。

未经允许不得转载: 技术文章 » Java编程 » Java的Iterator接口