我有两个类:MyArrayCollection,它实现了Collection,以及MyArrayList,它扩展了MyArrayCollection并实现了List。第一个有iterator()。如何在第二个类的listIterator()实现中使用它?我的丑陋尝试:
class MyArrayCollection implements Collection<Integer> {
...
class CIterator implements Iterator<Integer> {
@Override
public boolean hasNext() {
return pos < size;
}
@Override
public Integer next() {
return array[++pos];
}
}
@Override
public Iterator<Integer> iterator() {
return new CIterator();
}
...
}
class MyArrayList extends MyArrayCollection implements List<Integer> {
...
class CListIterator extends CIterator implements ListIterator<Integer> {
...
}
@Override
public ListIterator<Integer> listIterator() {
return new CListIterator();
}
...
}
答案 0 :(得分:0)
我不确定我是否理解您的问题,但我想您想使用从Iterator<Integer>
方法获取的iterator()
实例。当然,你可以这样做:
class CListIterator extends CIterator implements ListIterator<Integer>
{
private final Iterator<Integer> iterator;
public CListIterator() {
super();
this.iterator = iterator();
}
...
}
然后您可以使用该迭代器实例从ListInteger
实现方法。但问题是你需要实现这些功能:
迭代器实例在那里可能不会帮到你很多。例如,ArrayList.listIterator
迭代器根本不使用ArrayList.iterator
。