2012-04-26 51 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.this;'。另請注意,您可能想要緩存迭代器中的下一個節點,而不是從第一個節點迭代到當前節點。 – Thomas 2012-04-26 15:06:47

+0

謝謝托馬斯:D – 2012-04-26 15:08:07

回答

8

只要寫:

Node<E> node = Node.this; 

它訪問