在java类java.util.Iterator接口中已经实现了?

时间:2011-12-10 05:16:36

标签: java

我在接受采访时被问到,在hasNext()next()remove()方法的定义中,已经实现了哪个java类迭代器接口。

请告诉我。这似乎很关键。

2 个答案:

答案 0 :(得分:2)

迭代器接口在 java.util.AbstractList http://docs.oracle.com/javase/1.5.0/docs/api/java/util/AbstractList.html中实现。以下是文档中的解释:“与其他抽象集合实现不同,程序员不必提供迭代器实现;迭代器和列表迭代器由此类实现,最重要的是”随机访问“方法: get(int index),set(int index,Object element),set(int index,Object element),add(int index,Object element)和remove(int index)。

方法 iterator()返回列表中元素的迭代器。您还将在扩展AbstractList:Vector,ArrayList的类上看到此方法。

答案 1 :(得分:0)

java.util.AbstractList 是为 Iterable 接口提供实现的抽象类(通过实现List接口,其中List扩展Collection Ifc; Collection扩展Iterable Ifc)。< / p>

AbstractList具有内部类private class Itr,它实现了Iterator接口,意味着在这里提供hasNext(), next() 方法的实现。 因此iterator():: AbstractList方法为该集合上的遍历提供了new Itr()对象。

ArrayList,Vector都是AbstractList的子类,它本身可以访问iterator():: AbstractList API并返回新的Iterator对象。

Simalarly for Set; AbstractCollection 是迭代器实现的抽象类。

我们在 java.util.AbstractList 中还有一个内部类,即 class ListItr extends Itr implements ListIterator
这将允许我们在两个方向上遍历集合。