据了解,Stream保留最近评估的元素.我想它不保留所有评估的元素(这是不可行的),所以它可能使用一些内部的“缓存”.
这是对的吗?我可以控制这个缓存的大小和策略吗?
解决方法
流像列表,根据需要生成其成员.一旦生成元素,它将保留在流中并重新使用.
例如:
lazy val naturals: Stream[Int] = Stream.cons(0,naturals.map{_ + 1})
会给你一个自然数字的流.如果我打电话
naturals(5)
naturals(8)
它将重新使用前6个元素并再生成3个元素.
如果您关心内存使用情况,您可以使用Stream.drop(num)来生成一个新的流,并从头开始删除num元素,从而允许使用旧流垃圾收集截断的元素.例如:
naturals(5) //returns 5 val truncated = naturals.drop(4) truncated(5) //returns 9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。