Клонирование итераторов в Java - PullRequest
11 голосов
/ 09 октября 2009

У меня есть LinkedList в Java, итератор для просмотра списка, и я хотел бы клонировать итератор, чтобы выполнить некоторую временную «предварительную» обработку списка относительно позиции исходного итератора.

Я понимаю, что клонирование итератора невозможно в каждой ситуации, но есть ли способ клонировать итератор в LinkedList (или сохранить и восстановить его состояние)?

Ответы [ 2 ]

11 голосов
/ 09 октября 2009

Это было бы возможно, но Sun убедился, что вы не можете (сделав класс закрытым).

Но, возможно, вы можете достичь того, что хотите, используя listIterator() вместо простого iterator(). A ListIterator может двигаться в обоих направлениях.

1 голос
/ 09 октября 2009

С помощью 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...