ZetCode

元素迭代的历史

上次修改时间:2024 年 7 月 16 日

在本文中,我们将探讨 Java 中元素迭代的历史。

在编程中,最常见的任务之一是迭代数据集合。本教程展示了元素迭代如何随着时间的推移在 Java 语言中演变。

枚举 (Enumeration)

在 Java 的早期,Enumeration 用于迭代数据元素。Enumeration 接口定义了枚举(一次获取一个元素)集合中元素的方法。两个主要的集合类是 VectorHashtable

如今,EnumerationVectorHashtable 被认为是过时的。然而,它们并没有被弃用。

Main.java
import java.util.Enumeration;
import java.util.Vector;

void main() {

    Vector items = new Vector();

    items.add("coin");
    items.add("pen");
    items.add("chair");
    items.add("lamp");
    items.add("cup");
    items.add("spoon");
    
    Enumeration itemsEn = items.elements();

    while (itemsEn.hasMoreElements()) {
        System.out.println(itemsEn.nextElement());
    }
}

我们有一个字符串向量。我们使用 Enumeration 循环遍历向量的元素。

Enumeration itemsEn = items.elements();

elements 方法返回向量的 Enumeration

while (itemsEn.hasMoreElements()) {

    System.out.println(itemsEn.nextElement());
}

这些元素在 while 循环中被遍历。当还有更多元素要提取时,hasMoreElements 返回 true;当所有元素都被枚举后,返回 false

迭代器 (Iterator)

Java 1.2 引入了标准集合类(ListSetMap)和 IteratorIterator 带来了迭代器设计模式,这是一种常见的行为模式,用于以顺序方式访问集合对象的元素,而无需了解其底层表示。

Main.java
import java.util.Iterator;
import java.util.List;

void main() {
    
    List<String> items = List.of("coin", "ball", "lamp", "spoon");
    
    Iterator it = items.iterator();
    
    while (it.hasNext()) {
        
        System.out.println(it.next());
    }
}

在示例中,我们使用 Iterator 循环遍历元素列表。

List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");

我们使用 Arrays.asList 方法在一行中定义一个列表。

Iterator it = items.iterator();

我们使用 iterator 方法从列表中获取迭代器。

while (it.hasNext()) {
    
    System.out.println(it.next());
}

我们在 while 循环中遍历元素列表。我们使用迭代器的 hasNextnext 方法。

Iterable 和增强型 for 循环

Java 5 引入了泛型、Iterable 和增强型 for 循环。Iterable 接口允许对象成为增强型 for 循环语句的目标。Iterable 是一个包含一系列可以迭代的元素的对象。它有一个生成 Iterator 的方法。

Main.java
import java.util.List;

void main() {
    
    List<String> items = List.of("coin", "ball", "lamp", "spoon");
    
    for (String item: items) {
        
        System.out.println(item);
    }
}

该示例使用增强型 for 循环来遍历列表元素。迭代器的创建以及对 hasNextnext 方法的调用不是显式的,但它们仍然在幕后发生。

Java forEach 方法

Java 8 引入了 forEach 方法。forEach 方法对 Iterable 的每个元素执行给定的操作,直到所有元素都被处理完毕或者该操作抛出异常。

forEach 方法使用内部迭代器,而以前的方法使用外部迭代器。

Main.java
import java.util.List;

void main() {

    List<String> items = List.of("coin", "ball", "lamp", "spoon");
    
    items.forEach(System.out::println);
}

在该示例中,我们使用 forEach 方法循环遍历元素。

来源

Java 入门教程

在本文中,我们回顾了 Java 中元素迭代的简要历史。

作者

我的名字是 Jan Bodnar,我是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已经撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出所有Java教程