Клонирование итераторов в 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);