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, я реализовал Iterator в самом классе Node, но я хочу сделать его внутренним классом, любым предложением, как сделать это так?
Так что вы хотите получить доступ к внешнему узлу? Попробуйте 'Node node = Node.this;'. Также обратите внимание, что вы можете захотеть кэшировать следующий узел в итераторе, а не итерировать от первого узла до текущего узла. –
Thomas
Спасибо Thomas: D –