【问题标题】:Where is the iterator interface implementation in Java 5 and above?Java 5 及以上版本的迭代器接口实现在哪里?
【发布时间】:2012-07-11 11:28:06
【问题描述】:

由于 Iterator 是具有 hasNext()、next() 和 remove() 方法的接口。但是 Java 类中所有这些方法的实现在哪里呢?

【问题讨论】:

    标签: java iterator


    【解决方案1】:

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

    因为Iterator是一个接口,你可以用它做一些花哨的事情,比如包装和装饰它,而不用关注实际的实现。

    【讨论】:

    • 但关键是该实现是故意对用户隐藏的,因此可以在不破坏任何客户端代码的情况下对其进行更改、修改和弄乱。这是非常好的做法的一个例子。
    • Tomasz,你能详细说明一下吗..?
    • @LouisWasserman:完全正确。请参阅我添加的有关装饰现有迭代器的示例 - 只要您的装饰器遵循 API,客户端就不会关心
    • @PaddyREC:你到底想让我详细说明什么?该实现隐藏在适当集合内的私有类中。您可以查看 JDK 源并对其进行分析。但正如我所说,无需看它们,它们只是工作:-)。
    • @PaddyREC:实现在这些类的源代码中,但它是private——它在这些类之外不可见或不可用。您可以调用iterator() 方法让对象为您提供一个迭代器,但您看不到它是如何实现的,也无法为自己创建一个。这是经过深思熟虑的良好做法。
    【解决方案2】:

    Iterator 接口被实现为 innerprivate(应该但不一定)类 in实现java.lang.Iterable<T> 接口。 Iterable<T> - Iterator<T> iterator() 的方法允许一个对象成为“foreach”语句的目标。

    更多信息请阅读@Andreas Grech 的博客:Java's Iterators and Iterables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2011-11-14
      • 2020-07-08
      相关资源
      最近更新 更多