原文:http://zetcode.com/articles/javaiterationhistory/

在本教程中,我们将研究 Java 中元素迭代的历史。

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

Enumeration

在 Java 的早期,Enumeration用于迭代数据元素。 Enumeration接口定义了一些方法,我们可以通过这些方法枚举(一次获得一个元素)对象集合中的元素。 两个主要的集合类是VectorHashtable

今天,EnumerationVectorHashtable被认为已过时。 但是,它们不被弃用。

EnumerationEx.java

  1. package com.zetcode;
  2. import java.util.Enumeration;
  3. import java.util.Vector;
  4. public class EnumerationEx {
  5. public static void main(String[] args) {
  6. Vector items = new Vector();
  7. items.add("coin");
  8. items.add("pen");
  9. items.add("chair");
  10. items.add("lamp");
  11. items.add("cup");
  12. items.add("spoon");
  13. Enumeration itemsEn = items.elements();
  14. while (itemsEn.hasMoreElements()) {
  15. System.out.println(itemsEn.nextElement());
  16. }
  17. }
  18. }

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

  1. Enumeration itemsEn = items.elements();

elements()方法返回向量的Enumeration

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

元素在while循环中遍历。 当还有更多元素要提取时,hasMoreElements()返回true,而在列举所有元素时返回false

迭代器

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

IteratorEx.java

  1. package com.zetcode;
  2. import java.util.Arrays;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. public class IteratorEx {
  6. public static void main(String[] args) {
  7. List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");
  8. Iterator it = items.iterator();
  9. while (it.hasNext()) {
  10. System.out.println(it.next());
  11. }
  12. }
  13. }

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

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

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

  1. Iterator it = items.iterator();

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

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

我们在while循环中浏览元素列表。 我们使用迭代器的hasNext()next()方法。

可迭代对象和增强的for循环

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

EnhancedForLoop.java

  1. package com.zetcode;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class EnhancedForLoop {
  5. public static void main(String[] args) {
  6. List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");
  7. for (String item: items) {
  8. System.out.println(item);
  9. }
  10. }
  11. }

该示例使用增强的for循环遍历列表元素。 迭代器的创建以及对hasNext()next()方法的调用不是明确的,但它们仍在幕后进行。

Java8 forEach()方法

forEach()方法对Iterable的每个元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 forEach()方法使用内部迭代器,而先前的方法使用外部迭代器。

ForEachEx.java

  1. package com.zetcode;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class ForEachEx {
  5. public static void main(String[] args) {
  6. List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");
  7. items.forEach(System.out::println);
  8. }
  9. }

在示例中,我们使用forEach()方法遍历元素。

在本教程中,我们研究了 Java 中元素迭代的简要历史。

您可能也对以下相关教程感兴趣:用 Java 过滤列表Java ArrayList教程Opencsv 教程Java 教程用 Java 读取文本用 Java 读取网页Google Guava 简介