Удаление итератора пользовательского связанного списка не работает

#java #list #iterator

#java #Список #итератор

Вопрос:

У меня есть программа, в которой мне нужно создать пользовательский итератор связанного списка для созданного мной класса связанного списка. Все работает, как ожидалось, но мой метод удаления вообще не работает. Вот источник:

 public class LinkedListIterator implements Iterator<T>{

    ListNode<T> current = head, previous = null;
    boolean canRemove = false;

    public boolean hasNext() {
        return current != null;
    }

    public T next() {
        if(hasNext()==false){
            throw new IllegalStateException("hasNext was false!");
        }
        canRemove = true;
        previous = current;
        current = current.getNext();
        return previous.getValue();
    }

    public void remove(){
        if(canRemove == true){
            previous.setNext(current.getNext());
            canRemove = false;
        }
    }

}
  

Комментарии:

1. Определите «не работает». (Я подозреваю, что для форматирования этой первой строки кода вам нужен дополнительный перевод строки между вашим абзацем и вашим кодом)

2. Некоторые примечания, не связанные с вашей проблемой: Согласно документации к Iterator<E> , next следует выбрасывать NoSuchElementException , когда нет следующего элемента. remove должен выдавать результат IllegalStateException , если вызван до того, как next был или если remove был вызван во второй раз, прежде чем next был вызван снова.

3. Ваша hasNext функция тоже не кажется правильной…