当前位置:首页 > Java > 正文

掌握Java迭代器(Iterator)

在Java编程中,当我们需要遍历集合(如List、Set等)中的元素时,常常会用到迭代器(Iterator)。迭代器提供了一种统一、安全的方式来访问集合中的每一个元素,而无需暴露集合的内部结构。本教程将带你从零开始,轻松掌握Java迭代器的使用方法。

掌握Java迭代器(Iterator) Java迭代器 Iterator接口 集合遍历 Java基础教程 第1张

什么是Java迭代器?

Java迭代器是java.util.Iterator接口的一个实现,用于顺序访问集合中的元素。它就像一个“指针”,可以逐个指向集合中的每个对象。

使用迭代器的好处包括:

  • 统一的遍历方式,适用于所有实现了Collection接口的集合类
  • 在遍历过程中可以安全地删除元素(使用remove()方法)
  • 避免因并发修改导致的ConcurrentModificationException异常(在单线程环境下)

Iterator接口的核心方法

Iterator接口主要有三个方法:

  • hasNext():判断是否还有下一个元素,返回truefalse
  • next():返回集合中的下一个元素
  • remove():删除当前元素(即上一次调用next()返回的元素)

基本使用示例

下面是一个使用Iterator遍历ArrayList的完整例子:

import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorExample {    public static void main(String[] args) {        // 创建一个List并添加元素        List<String> fruits = new ArrayList<>();        fruits.add("苹果");        fruits.add("香蕉");        fruits.add("橙子");        // 获取迭代器        Iterator<String> iterator = fruits.iterator();        // 使用while循环遍历        while (iterator.hasNext()) {            String fruit = iterator.next();            System.out.println(fruit);        }    }}

运行结果:

苹果香蕉橙子

在遍历中安全删除元素

这是迭代器的一大优势!如果你直接在for-each循环中调用集合的remove()方法,会抛出ConcurrentModificationException异常。但使用Iterator的remove()方法则不会:

// 删除所有长度小于3的水果名称Iterator<String> iterator = fruits.iterator();while (iterator.hasNext()) {    String fruit = iterator.next();    if (fruit.length() < 3) {        iterator.remove(); // 安全删除    }}

增强型for循环 vs 迭代器

你可能也熟悉Java的增强型for循环(for-each):

for (String fruit : fruits) {    System.out.println(fruit);}

其实,for-each循环底层就是使用了Iterator!但它不能在遍历时删除元素。因此,当你需要在遍历过程中修改集合(尤其是删除),就必须显式使用Iterator。

总结

通过本教程,你应该已经掌握了Java迭代器的基本用法。记住以下几点:

  • 使用iterator()方法获取集合的迭代器
  • hasNext()next()进行遍历
  • remove()安全删除元素
  • 当不需要修改集合时,for-each更简洁;需要删除时,必须用Iterator

掌握Java迭代器是学习Java基础教程的重要一环,它不仅帮助你理解集合框架的设计思想,还能让你写出更健壮、安全的代码。无论是处理简单的List还是复杂的Set,集合遍历都离不开Iterator这一核心工具。希望这篇关于Iterator接口的入门指南能为你打下坚实的基础!