Java 如何在listIterator()实现中使用超类迭代器()?
我有两个类:MyArrayCollection(实现集合)和MyArrayList(扩展MyArrayCollection并实现列表)。第一个是迭代器()。如何在第二个类的listIterator()实现中使用它?我丑陋的尝试:Java 如何在listIterator()实现中使用超类迭代器()?,java,iterator,implementation,extending,listiterator,Java,Iterator,Implementation,Extending,Listiterator,我有两个类:MyArrayCollection(实现集合)和MyArrayList(扩展MyArrayCollection并实现列表)。第一个是迭代器()。如何在第二个类的listIterator()实现中使用它?我丑陋的尝试: class MyArrayCollection implements Collection<Integer> { ... class CIterator implements Iterator<Integer> {
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();
}
...
}
类MyArrayCollection实现收集{
...
类CIterator实现迭代器{
@凌驾
公共布尔hasNext(){
返回pos
我不确定是否理解您的问题,但我想您应该使用从Iterator()
方法获取的Iterator
实例。当然可以,对于像这样的Instance:
class CListIterator extends CIterator implements ListIterator<Integer>
{
private final Iterator<Integer> iterator;
public CListIterator() {
super();
this.iterator = iterator();
}
...
}
类Clisiterator扩展了CIterator实现了ListIterator
{
私有最终迭代器;
公共客户机(){
超级();
this.iterator=iterator();
}
...
}
然后可以使用该迭代器实例实现ListInteger
中的方法。但问题是您需要实现这些功能:
- 向后迭代
- 在任意点获取索引
- 在任意点添加新值
- 在该点设置一个新值
迭代器实例在这方面可能帮不了你多少忙。例如,
ArrayList.listIterator
iterator根本不使用ArrayList.iterator
。因此,如果我正确理解您的问题,您希望在listIterator方法中返回CIterator,但您不能?