我只是漫游 API,我注意到枚举和迭代器不是非常有用的接口(interface)。
具体来说,我的意思是,而不是说(对于 Vector v):
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
System.out.println(e.nextElement());
我们可以很容易地说:
for (int i = 0; i < v.size(); i++)
System.out.println(v.elementAt(i));
我想知道的是:
使用枚举/迭代器是否有任何性能奖励?
它是否为你提供了实现后者for循环无法实现的东西的能力?
最佳答案
并非所有具有Iterator
的东西都是随机访问List
。例如,Set
不允许索引访问。 LinkedList
允许这样做,但按索引循环会产生糟糕的性能。
其他根本不是Collection
的事物具有Iterator
,或者也可以表示为Iterator
。例如,可以用 Iterator
表示无限序列。
拥有一个用于遍历事物的简单、通用的接口(interface)允许方法可以在尽可能广泛的对象上运行。
顺便说一句,Vector
和 Enumeration
都已过时,在现代 Java 中基本上已被 ArrayList
和 Iterator
分别。
关于java - Java 枚举/迭代器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657568/