Java:Iterator、ListIterator接口的疑问

这两个接口的定义如下:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}

public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
E previous();
int nextIndex();
int previousIndex();
void remove();
void add(E e);
}

拿hasNext()方法来说,在Iterator已经声明一遍了,在ListIterator中已经被继承了,为什么还要写声明一遍呢?

api中写了public interface ListIterator<E>extends Iterator<E>,但是 Iterator里面hasNext() 仅判断
是否仍有元素可以迭代,如果有返回true,而ListIterator中的hasNext()以正向遍历列表是否仍有元素可以迭代,如果有返回true,同时还有hasPrevious()以逆向遍历列表是否仍有元素,有则返回 true,追问

你好大哥,但是他们只是接口呀,里面没有具体实现呀,具体实现到ArrayList里面才有,只定义一遍再分别到各自的类中完成各自的实现不是更好吗?写了两次有什么优点吗?

追答

Iterator和listIterator这两种迭代器java已经帮你写好了,导包直接可以用了啊,建议你好好看看javaapi。需要注意的是listIterator只能用于list集合,因为只有list集合有角标

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答