Java 类派生迭代器

Java 类派生迭代器,java,stack,queue,Java,Stack,Queue,从类派生迭代器意味着什么 更具体地说,我有两个类DNode和DoublyLinkedList。DoublyLinkedList使用DNode来构造列表,我使用这两种方法来创建堆栈和队列。如何编写返回类派生迭代器的方法 以下是我目前拥有的: public Iterator <E> getCollectionIterator() { Iterator <E> i = new Iterator <E>() { private in

从类派生迭代器意味着什么

更具体地说,我有两个类DNode和DoublyLinkedList。DoublyLinkedList使用DNode来构造列表,我使用这两种方法来创建堆栈和队列。如何编写返回类派生迭代器的方法

以下是我目前拥有的:

public Iterator <E> getCollectionIterator() {

      Iterator <E> i = new Iterator <E>() {

          private int currentIndex = 0;

          @Override
          public boolean hasNext() {
               return (currentIndex < size && arrayList[currentIndex] != null);
          }

          @Override
          public E next() {
               if(hasNext()) {
                  return arrayList[currentIndex++];
               } else
                 throw new NoSuchElementException("Next element does not exist.");
          }        

         @Override
         public void remove() {
               throw new UnsupportedOperationException("Remove not supported");
         }
    };

      return i;
}
public迭代器getCollectionIterator(){
迭代器i=新迭代器(){
私有int currentIndex=0;
@凌驾
公共布尔hasNext(){
返回(currentIndex
如果某个东西是“类派生的”,则表示它是一个子类,即它是从基类派生的。我们不知道他们为什么要派生迭代器,因为我们没有足够的信息来知道旁注:如何扩展
DNode
?链表由零到多个节点组成,它不会扩展一个节点。你是对的,这是我的错误,DNode只被DoublyLinkedList使用。我无法理解的是,类派生是否意味着迭代的集合需要声明为DoublyLinkedList类型?无关:
if(hasNext()==true)
最好写成
if(hasNext())
。从
next()
返回
null
违反了约定,请参阅:“如果迭代没有更多元素,则抛出
NoSuchElementException
”,因为DNode正在构建列表。您可以在DNode类上定义迭代器,也可以在DoublyLinkedList中定义内部类(作为子类)这将用于迭代双链接列表。然后你可以在LinkedList中调用这个迭代器类,这就是它在DoublyLinkedList上来回运行的方式。所以我需要导入LinkedList并重写它的迭代器接口,以实现类派生的迭代器?