【问题标题】:How to use Iterator/Enumeration Interface in Java [duplicate]如何在 Java 中使用迭代器/枚举接口 [重复]
【发布时间】:2012-10-03 16:31:24
【问题描述】:

可能重复:
Difference between Java Enumeration and Iterator

我正在阅读这篇文章“Difference between Iterator & Enumeration

如果可以使用迭代器方法或枚举方法来执行相同的操作,那么有什么区别?

我应该在哪里使用这些界面?

【问题讨论】:

  • 我没有得到你需要的东西,但它不在副本中。接受的答案似乎清晰而完整。你能解释一下你的问题吗?
  • hasMoreElement() 和 hasNext() 意思一样吗?
  • 是的。他们是一样的。这样可以在您的硬盘上保存一些宝贵的八位字节。
  • 枚举器是遗留的 Java 1.0 接口。除了一些从那时起仍然存在的 API,您可以假装它们不存在。 (对于像 VectorHashtable 这样的旧集合类也是如此。)使用迭代器或增强的 for 循环。
  • @Appsheriff:是的,它们的意思是一样的……但是你不能互换使用它们,因为一个要求你有一个Iterator,另一个要求你有一个Enumeration .无论如何,Enumeration 已经不再使用(它没有像 Iterator 这样的语言级支持)。

标签: java iterator enumeration


【解决方案1】:

枚举器是旧版 Java 1.0 的一部分。迭代器只出现在 Java 1.2 中。据我所知,枚举器只是为了向后兼容而保留的。根据java docs for Enumerator,所有新代码都应使用迭代器接口。

注意:此接口的功能与 迭代器接口。此外,Iterator 增加了一个可选的 remove 操作,并且具有更短的方法名称。新的实现应该 考虑使用迭代器而不是枚举。

在遍历集合、列表、集合等或实现该迭代器接口的东西时,您应该使用迭代器。您还可以使用“new”(Java 5)for 循环构造来迭代这样的集合。但是请记住,在循环时从集合中删除项目的唯一安全方法是使用 Iterator.remove() 方法。

【讨论】:

    【解决方案2】:

    迭代器是较新的首选方法。它添加了一个删除功能。

    【讨论】:

      【解决方案3】:

      枚举用于获取列表中的连续元素,不能用于以任何方式更改列表,例如通过插入或删除。但是,迭代器是一个实例化的对象,它在列表中维护一个引用,并且可以在该引用处插入和删除元素,以及获取列表中的元素。
      如果您只是想获取列表中的元素,那么枚举和使用迭代器都可以正常工作。但是,如果你需要增加插入和删除的功能,我建议使用迭代器。

      【讨论】:

      • 我没有看到任何使用迭代器插入的方法。
      • 是的,您在 Java API 方面是正确的,我的错误。但是,在实现迭代器方面,通常会创建插入方法。
      • 是的,我同意这一点。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 2022-01-14
      • 2014-06-09
      • 2014-01-04
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多