2012-04-26 18 views
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を実装していましたが、内部クラス、任意の提案にしたいのですか?

+3

囲む外側のノードのインスタンスにアクセスしますか? 'Node node = Node.this;'を試してください。また、最初のノードから現在のノードまで反復するのではなく、イテレータ内の次のノードをキャッシュすることもできます。 – Thomas

+0

ありがとうThomas:D –

答えて

8

だけ書く:

Node<E> node = Node.this; 

をそれはあなたが外側のノードにアクセスしたい

関連する問題