学科分类
目录
Java基础

Iterator遍历集合

Iterator接口是Java集合框架中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。

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

文件1 Example03.java

 1    import java.util.ArrayList;
 2    import java.util.Iterator;
 3    public class Example03 {
 4        public static void main(String[] args) {
 5             // 创建ArrayList集合
 6            ArrayList list = new ArrayList();   
 7             // 向该集合中添加字符串
 8            list.add("data_1");                    
 9            list.add("data_2");
 10            list.add("data_3");
 11             // 获取Iterator对象
 12            Iterator iterator = list.iterator(); 
 13                // 判断集合中是否存在下一个元素
 14            while (iterator.hasNext()) {         
 15                Object obj = iterator.next();   // 取出ArrayList集合中的元素
 16                System.out.println(obj);
 17            }
 18        }
 19    }

运行结果如图1所示。

图1 运行结果

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

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

图2 遍历元素过程图

在图2中,在调用Iterator的next()方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next()方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next()方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推,直到hasNext()方法返回false,表示到达了集合的末尾终止对元素的遍历。

点击此处
隐藏目录