加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Scala中复制迭代器?

发布时间:2020-12-16 09:14:39 所属栏目:安全 来源:网络整理
导读:关于重复 这不是A very simple question: How to clone an iterator?的重复 请不要盲目关闭这个问题,所谓的复制所提供的所有答案都不行. OP负责其他问题,显然,答案适合HIS问题,但不是我的. 不是每一个类似的问题都是重复的,SE上还有“扩展问题”的功能,唯一
关于重复

这不是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

“你拿列表和…”.不,我不我没有列表,我有迭代器.一般来说,我不了解迭代器的基础,我唯一需要的是迭代器.我必须“叉”它.

解决方法

您不能在不破坏迭代器的情况下复制迭代器.迭代器的合同是只能遍历一次.

您链接的问题显示如何获取两个副本,以换取已损坏的副本.您不能继续使用原始的,但您现在可以独立地运行两个新的副本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读