О дубликате
Это НЕ дубликат Как клонировать итератор?
Пожалуйста, не закрывайте этот вопрос вслепую, всеответы в так называемом дубликате НЕ работают.ОП отвечает за другую проблему, и, очевидно, ответы соответствуют проблеме ЕГО, но не моей.
Не каждый подобный вопрос является дубликатом, на SE есть такая особенность, как «вопрос расширения»,Единственный способ - снова спросить на ту же тему, чтобы получить разные, рабочие ответы.
Задача
У меня есть итератор.Я хотел бы получить его копию (дубликат), чтобы затем я мог продолжить работу с оригиналом и копировать совершенно независимо.
Важно
Копирование с помощью отражения или сериализации отсутствует-go (снижение производительности).
Пример
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 , но вопрос общий - просто итератор.
Подход № 1
Если вы редактируете строку (*) и пишете:
var it2 = it1.toList.iterator
(это было предложено в качестве решения в связанном вопросе) исключение выдается при выполнении программы.
Подход # 2
"Вы берете список и ...".Нет не знаюУ меня нет списка, у меня есть итератор.В общем, я ничего не знаю о коллекции, которая лежит в основе итератора, единственное, что у меня есть, это итератор.Я должен "раскошелиться".