Я пишу функцию с именем public Iterator<E> iterator(int index)
, которая возвращает итератор, начинающийся с указанной позиции ('index') в списке. Указанный индекс основан на 0. Мой код до сих пор ниже.Как создать метод итератора, который итерации начинается с определенной позиции
public Iterator<E> iterator(int index) {
Iterator<E> it = iterator(index);
while (it.hasNext()) {
E item = it.next();
System.out.println(item);
}
return it;
}
Код в основном выглядит следующим образом.
public static void main(String[] args) {
LinkedList<Integer> lst = new LinkedList<Integer>();
lst.add(3);
lst.append(6);
lst.append(5);
lst.append(7);
lst.iterator(1);
lst - это связанный список. Когда я пытаюсь вызвать метод iterator на нем, проходящий в 1, я ожидаю, что он будет перебирать связанный список, начиная с позиции 1, который затем должен печатать: 6 5 7
.
Однако, вместо этого, я получаю сообщение об ошибке, которое считывает
Exception in thread "main" java.lang.StackOverflowError
at Midterm.LinkedList.iterator(LinkedList.java:183)
Я не могу понять, что я делаю неправильно. Мой вопрос в том, может ли кто-нибудь показать мне, как исправить мой метод public Iterator<E> iterator(int index)
, чтобы он повторялся через связанный список, начиная с позиции 1?
'iterator (int)' вызывает 'iterator (int)' в своей первой строке. –
... что приводит к бесконечной рекурсии – Thilo
Вы получаете 'StackOverflowError', потому что' iterator' вызывает себя. Вы пишете собственный класс LinkedList или расширяете стандартный? –