Это НЕ дубликат Как клонировать итератор?
Пожалуйста, не закрывайте вслепую этот вопрос, все ответы, данные в -названный дубликат НЕ РАБОТАЕТ . OP отвечает за другую проблему, и, очевидно, ответы соответствовали ЕГО проблеме, но не моей.
Не каждый подобный вопрос является дубликатом, в SE есть такая функция, как «дополнительный вопрос», единственный способ - задать еще раз на ту же тему, чтобы получить разные, работающие ответы.
У меня есть итератор.Я хотел бы получить его копию (дубликат), чтобы я мог продолжить работу с оригиналом и копировать полностью независимо.
Важно
Копирование посредством отражения или сериализации недопустимо (снижение производительности).
Пример
var list = List(1,2,3,4,5)
var it1 = list.iterator
it1.next()
var it2 = it1 // (*)
it2.next()
println(it1.next())
Это будет просто ссылка на it1 , поэтому при изменении it1 , it2 также изменяется, и наоборот.
В приведенном выше примере используется List , сейчас я борюсь с HashMap , но вопрос общий - просто итератор.
Если вы редактируете строку (*) и пишете:
var it2 = it1.toList.iterator
(это было предложено в качестве решения в связанном вопросе), во время выполнения программы выдается исключение.
«Вы берете список и ...». Нет, не знаю. У меня нет списка, у меня есть итератор. В общем, я ничего не знаю о коллекции, лежащей в основе итератора, единственное, что у меня есть, это итератор. Я должен его «раскошелиться».