关于重复
这不是How to clone an iterator?如何在Scala中复制迭代器?
重复请不要盲目关闭这个问题,给出所有的答案所谓重复切勿工作。 OP负责另一个问题,显然,答案符合他的问题,但不是我的。
并非每一个类似的问题都是重复的,SE上有“扩展问题”这样的功能,唯一的办法就是再次询问同一主题以获得不同的工作答案。
问题
我有迭代器。我想获得它的副本(复制),那么我可以完全独立地进行原创和复制。
重要
复制通过反射或序列号为NO-GO(性能损失)。
例
var list = List(1,2,3,4,5)
var it1 = list.iterator
it1.next()
var it2 = it1 // (*)
it2.next()
println(it1.next())
改变IT1,IT2当变化以及反之亦然这将使简单地参照IT1,所以。
上面的例子使用列表,我目前正在与HashMap的挣扎,但问题是一般人 - 只要迭代器。
方法#1
如果您编辑行(*),并写:
var it2 = it1.toList.iterator
(这个建议作为链接的问题的解决方案),而执行程序的异常被抛出。
方法2
“你拿的名单和...”。不,我不知道。我没有列表,我有迭代器。一般来说,我不知道任何关于迭代器的基础,我唯一拥有的就是迭代器。我必须“分岔”它。
这是重复的。用我的答案解决另一个问题;它适用于所有情况。 (该方法也称为“重复”。) –
我已在另一页上编辑Miles的回答,以突出显示您在此处尝试执行的操作不起作用,并提供可行的解决方案。 –
@克雷克尔,不,它不是通过答案来判断的。在其他问题中给出的答案回答了OTHER问题,它们不适合我的问题。我很感谢你的回答,他们很有教育意义,我确信我知道更多,但他们不能解决这个问题。 – greenoldman