2

私はノードクラスを書いていて、内側のノードイテレータクラスを作りたいと思っています.

import java.util.Iterator;
import java.util.NoSuchElementException;

public class Node<E> {
  E data;
  Node<E> next;
  int current = 0;

  public Node(E data, Node<E> next){
    this.data = data;
    this.next = next;
  }

  public void setNext(Node<E> next){
    this.next = next;
  }

  private class NodeIterator implements Iterator {

    /*@Override
    public boolean hasNext() {      
      Node<E> node = this;
      for(int i=1; i<current; i++){
        node = node.next;
      }
      if(node.next==null){
        current = 0;
        return false;
      }
      current++;
      return true;
    }*/

    @Override
    public boolean hasNext() {
      // code here
    }

    /*public Node<E> next() {       
      if(next==null){
        throw new NoSuchElementException();
      }
      Node<E> node = this;
      for(int i=0; i<current && node.next!=null; i++){
        node = node.next;
      }
      return node;
    }*/

    @Override
    public Node<E> next() {
      // code here
    }

    @Override
    public void remove() {
      throw new UnsupportedOperationException();
    }
  }
}

次のように NodeIterator 内にノード オブジェクトを作成したいと考えていますNode<E> node = this;

コメントされたコードはNodeクラスで書かれており、Nodeクラス自体にIteratorを実装していたのですが、インナークラスにしたいのですが、そのようにする方法はありますか?

4

1 に答える 1

8

書くだけ:

Node<E> node = Node.this;

囲んでいる外側の Node インスタンスにアクセスします

于 2012-04-26T15:06:06.353 に答える