这不是如何克隆迭代器的重复?
请不要盲目关闭这个问题,所谓的重复给出所有的答案不要工作.OP负责另一个问题,显然,答案符合HIS问题,但不是我的问题.
不是每个类似的问题都是重复的,在SE上有"扩展问题"这样的特征,唯一的方法是再次询问同一主题,以获得不同的,有效的答案.
我有迭代器.我想得到它的复制(复制),然后我可以完全独立地继续原始和复制.
重要
通过反射或序列化进行复制是不行的(性能损失).
例
var list = List(1,2,3,4,5)
var it1 = list.iterator
it1.next()
var it2 = it1 // (*)
it2.next()
println(it1.next())
Run Code Online (Sandbox Code Playgroud)
这将简单地引用it1,因此当改变it1时,it2也会改变,反之亦然.
上面的例子使用List,我目前正在与HashMap斗争,但问题是一般的 - 只是迭代器.
如果你编辑行(*)并写:
var it2 = it1.toList.iterator
Run Code Online (Sandbox Code Playgroud)
(这被建议作为链接问题中的解决方案)执行程序时抛出异常.
"你拿这份清单......".不,我没有.我没有列表,我有迭代器.一般来说,我不知道任何关于迭代器的基础的集合,我唯一拥有的是迭代器.我必须"分叉"它.