# 枚举器和迭代器之间的区别？

> 原文： [https://howtodoinjava.com/java/collections/difference-between-enumerator-and-iterator/](https://howtodoinjava.com/java/collections/difference-between-enumerator-and-iterator/)

在任何 java 面试中都可以询问`Enumerator`和`Iterator`之间的区别。 在这篇文章中，我列出了您在回答问题时可能会列举的一些差异。

## 枚举器和迭代器之间的区别

首先，枚举仅适用于遗留类，例如`Hashtable`，`Vector`。 **枚举是初始 Java 版本 JDK1.0** 的一部分。 尽管**迭代器与集合框架**一起包含在 JDK 1.2 中，该框架也仅在 JDK 1.2 中添加。

很明显，迭代器被设计为仅专注于集合框架。 如果您阅读了`Iterator`的 Java 文档，则会清楚说明其用途。 从甲骨文官方网站引用：

集合上的迭代器。 在 Java 集合框架中，迭代器代替了枚举。 迭代器与枚举有以下两种不同：

1.  迭代器允许调用者在迭代过程中使用定义明确的语义从基础集合中删除元素。
2.  方法名称已得到改进。

该接口是 Java 集合框架的成员。

最重要的是，`Enumeration`和`Iterator`都将给出连续的元素，但是`Iterator`以这种方式进行了改进，因此方法名称更短，并且具有附加的`remove()`方法。

这是一个并排比较：



| 枚举器 | 迭代器 |
| --- | --- |
| `hasMoreElement()` | `hasNext()` |
| `nextElement()` | `next()` |
| 不适用 | `remove()` |


Java API 规范建议，对于较新的程序，应首选迭代器而不是枚举，因为“**迭代器在 Java 集合框架中取代了枚举**”。

这就是这个简单而重要的主题。

**祝您学习愉快！**