【发布时间】:2012-07-11 11:28:06
【问题描述】:
由于 Iterator 是具有 hasNext()、next() 和 remove() 方法的接口。但是 Java 类中所有这些方法的实现在哪里呢?
【问题讨论】:
由于 Iterator 是具有 hasNext()、next() 和 remove() 方法的接口。但是 Java 类中所有这些方法的实现在哪里呢?
【问题讨论】:
几乎每个具体集合都有自己的实现,并针对该特定集合进行了优化。您不必担心细节。但这里有一些例子:
LinkedList - class ListItr implements ListIterator<E>
ArrayList - class ListItr extends Itr implements ListIterator<E>
HashSet - 实际上由 HashMap.keySet() 支持
因为Iterator是一个接口,你可以用它做一些花哨的事情,比如包装和装饰它,而不用关注实际的实现。
【讨论】:
private——它在这些类之外不可见或不可用。您可以调用iterator() 方法让对象为您提供一个迭代器,但您看不到它是如何实现的,也无法为自己创建一个。这是经过深思熟虑的良好做法。
Iterator 接口被实现为 inner 和 private(应该但不一定)类 in实现java.lang.Iterable<T> 接口。 Iterable<T> - Iterator<T> iterator() 的方法允许一个对象成为“foreach”语句的目标。
更多信息请阅读@Andreas Grech 的博客:Java's Iterators and Iterables
【讨论】: