java - Java 枚举/迭代器的使用

标签 java vector iterator enumeration

我只是漫游 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)允许方法可以在尽可能广泛的对象上运行。

顺便说一句,VectorEnumeration 都已过时,在现代 Java 中基本上已被 ArrayListIterator分别。

关于java - Java 枚举/迭代器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657568/

相关文章:

c++ - 使用迭代器按索引删除 vector ?

c++ - 获取模板迭代器引用的引用

python - 使用 python finditer,如何替换每个匹配的字符串?

java - 即使选择了 JTextField,箭头键 KeyBindings 仍然有效

c++ - std::erase 如何为 vector 实现?

java - 多个 java 小程序处理

C++ vector 关键字 "ref"

R - 通过矢量计数并刷新某个值?

java - Java8 Hibernate5.2 的日期问题

java - LinkedHashSet 或 ArrayList