Java 5及以上版本中的迭代器接口实现在哪里?

Java 5及以上版本中的迭代器接口实现在哪里?,java,iterator,Java,Iterator,因为迭代器是hasNext()、next()和remove()方法的接口。但是Java类中所有这些方法的实现在哪里呢?几乎每个具体集合都有自己的实现,针对特定集合进行了优化。你不必为细节操心。但这里有一些例子: LinkedList- ArrayList- HashSet-实际上由 因为迭代器是一个接口,你可以用它做一些奇特的事情,比如包装和装饰它,而不需要注意实际的实现。迭代器接口是作为一个内部的私有接口实现的(应该是但不一定是)实现java.lang.Iterable接口的类/接口中的类

因为迭代器是hasNext()、next()和remove()方法的接口。但是Java类中所有这些方法的实现在哪里呢?

几乎每个具体集合都有自己的实现,针对特定集合进行了优化。你不必为细节操心。但这里有一些例子:

  • LinkedList
    -
  • ArrayList
    -
  • HashSet
    -实际上由

因为迭代器是一个接口,你可以用它做一些奇特的事情,比如包装和装饰它,而不需要注意实际的实现。

迭代器接口是作为一个内部的私有接口实现的(应该是但不一定是)实现
java.lang.Iterable
接口的类/接口中的类。
Iterable
-
Iterator Iterator()
方法允许对象作为“foreach”语句的目标


有关更多信息,请阅读@Andreas Grech:

的博客,但关键是该实现故意对用户隐藏,因此可以在不破坏任何客户端代码的情况下对其进行更改、修改和修改。这是一个很好的实践例子。托马斯兹,你能详细阐述一下吗?@LouisWasserman:没错。请参阅我添加的关于装饰现有迭代器的示例-只要您的装饰器遵循API,客户机就不会在意less@PaddyREC:你想让我详细说明什么?实现隐藏在适当集合内的私有类中。您可以查看JDK源代码并对其进行分析。但是正如我所说的,不需要看它们,它们只需要工作:-)@PaddyREC:实现在这些类的源代码内部,但是它是私有的,从这些类外部看不到或不可用。您可以调用
iterator()
方法,让对象为您提供一个迭代器,但您无法看到它是如何实现的,也无法自己创建一个迭代器。这是深思熟虑的好做法。