L'interface Iterator

J'ai un assignement de l'Université qui m'oblige à mettre en œuvre un à l'intérieur de la classe qui implémente l'interface Iterator. L'itérateur fonctionne sur une seule liste liée de la superclasse.

Actuellement mon intérieur de la classe ressemble à ceci:

private class ListIterator implements Iterator<V>{

    Node temp;
    boolean nextCalled = false;

    ListIterator(Node fo){
        this.temp = fo;
    }

    @Override
    public boolean hasNext() {
        if(temp != null){
            return true;
        }
        return false;
    }

    @Override
    public V next() {
        nextCalled = true;
        return temp.getReprValue();
    }

    @Override
    public void remove() {
        if(nextCalled && hasNext()){
            nextCalled = false;
            removeElement(temp.getReprKey());
            temp = temp.getNext();
        }

    }

}

Maintenant, mon problème est que le hasNext() la méthode renvoie true, même lorsque la liste est en fait vide. Tout le reste semble fonctionner. J'ai sans doute négligé une logique faille quelque part, mais je ne le trouve pas moi-même.

next méthode censée non seulement la valeur de retour, mais en quelque sorte se déplacer itérateur dans la position suivante. Votre mise en stock d'un drapeau.
Ne devrait pas la valeur de temp être changé dans votre next() méthode?
Sur une note de côté, il y a déjà une interface nommée ListIterator dans le même package que Itérateur... de sorte que vous pouvez choisir un autre nom.

OriginalL'auteur Henrik Hillestad Løvold | 2013-03-12