我在接受采访时被问到,在hasNext()
,next()
和remove()
方法的定义中,已经实现了哪个java类迭代器接口。
请告诉我。这似乎很关键。
答案 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
这将允许我们在两个方向上遍历集合。