Клонирование итераторов в Java
У меня есть LinkedList в Java, итератор для просмотра списка, и я хотел бы клонировать итератор, чтобы сделать временную "просмотр вперед" обработки списка относительно позиции исходного итератора.
Я понимаю, что клонирование итератора невозможно в любой ситуации, но есть ли способ клонировать итератор в LinkedList (или сохранять и восстанавливать его состояние)?
Ответы
Ответ 1
Было бы возможно, но Sun убеждался, что вы не можете (сделав класс закрытым).
Но, возможно, вы можете достичь того, чего хотите, используя listIterator()
вместо простого iterator()
. A ListIterator
может перемещаться в обоих направлениях.
Ответ 2
С помощью ListIterator
вы можете сохранить индекс следующего элемента и можете получить новый ListIterator
на основе этого индекса.
Что-то вроде этого (пример Java 1.5):
LinkedList<Integer> list = new LinkedList<Integer>();
ListIterator<Integer> lit = list.listIterator(0);
<<do something here >>
int index = lit.nextIndex();
ListIterator<Integer> litclone = list.listIterator(index);