在本教程中,我们将研究 Java 中元素迭代的历史。
编程中最常见的任务之一就是迭代数据集合。 本教程说明了随着时间的推移,元素迭代如何随 Java 语言一起发展。
Enumeration
在 Java 的早期,Enumeration
用于迭代数据元素。 Enumeration
接口定义了一些方法,我们可以通过这些方法枚举(一次获得一个元素)对象集合中的元素。 两个主要的收集类是Vector
和Hashtable
。
今天,Enumeration
,Vector
和Hashtable
被认为已过时。 但是,它们不被弃用。
EnumerationEx.java
package com.zetcode;
import java.util.Enumeration;
import java.util.Vector;
public class EnumerationEx {
public static void main(String[] args) {
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
。
迭代器
Java 1.2 引入了标准集合类(List
,Set
,Map
)和Iterator
。 Iterator
带来了迭代器设计模式,这是一种常见的行为模式,用于按顺序访问集合对象的元素,而无需了解其基础表示。
IteratorEx.java
package com.zetcode;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class IteratorEx {
public static void main(String[] args) {
List<String> items = Arrays.asList("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 循环中浏览元素列表。 我们使用迭代器的hasNext()
和next()
方法。
可迭代对象和增强的for
循环
Java 5 引入了泛型Iterable
和增强的 for 循环。 Iterable
接口允许对象成为增强的 for 循环语句的目标。 Iterable
是一个对象,其中包含可以迭代的一系列元素。 它具有一种产生Iterator
的方法。
EnhancedForLoop.java
package com.zetcode;
import java.util.Arrays;
import java.util.List;
public class EnhancedForLoop {
public static void main(String[] args) {
List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");
for (String item: items) {
System.out.println(item);
}
}
}
该示例使用增强的 for 循环遍历列表元素。 迭代器的创建以及对hasNext()
和next()
方法的调用不是明确的,但它们仍在幕后进行。
Java 8 forEach()
方法
forEach()
方法对Iterable
的每个元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 forEach()
方法使用内部迭代器,而先前的方法使用外部迭代器。
ForEachEx.java
package com.zetcode;
import java.util.Arrays;
import java.util.List;
public class ForEachEx {
public static void main(String[] args) {
List<String> items = Arrays.asList("coin", "ball", "lamp", "spoon");
items.forEach(System.out::println);
}
}
在示例中,我们使用forEach()
方法遍历元素。
在本教程中,我们研究了 Java 中元素迭代的简要历史。