如何在Scala中复制迭代器?
关于重复
这不是A very simple question: How to clone an iterator?的重复 请不要盲目关闭这个问题,所谓的复制所提供的所有答案都不行. 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()) 这将简单地引用它1,所以在更改它时,it2也会改变,反之亦然. 上面的例子使用List,我目前正在努力使用HashMap,但问题是一般的 – 只是迭代器. 方法#1 如果编辑行(*)并写: var it2 = it1.toList.iterator (这被建议为链接问题中的解决方案)执行程序时抛出异常. 方法#2 “你拿列表和…”.不,我不我没有列表,我有迭代器.一般来说,我不了解迭代器的基础,我唯一需要的是迭代器.我必须“叉”它. 解决方法
您不能在不破坏迭代器的情况下复制迭代器.迭代器的合同是只能遍历一次.
您链接的问题显示如何获取两个副本,以换取已损坏的副本.您不能继续使用原始的,但您现在可以独立地运行两个新的副本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |