为了账号安全,请及时绑定邮箱和手机立即绑定

无限 IntStream 的长度?

无限 IntStream 的长度?

斯蒂芬大帝 2021-06-01 13:08:29
我通过这个创建了一个 randomIntStream : final static PrimitiveIterator.OfInt startValue = new Random().ints(0, 60).iterator();文档说这个流实际上是无止境的。我想了解在后台发生了什么。ints(0,60)正在生成无限的整数流。如果这是无限的,为什么我的机器没有泄漏任何内存?我想知道,实际上真正生成了多少个数字,以及这种实现是否会在流仍然结束时导致错误?或者这个流是否会不断地充满新的整数,因此它真的永远不会结束?如果我已经问过这个问题,那么现在生成随机数的最佳实践是什么?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

流是无限的¹,因此您可以生成任意数量的整数而不会耗尽。这并不意味着它会在您不要求任何内容时继续生成它们。

实际生成多少数字取决于您编写的代码。每次从迭代器中检索一个值时,都会生成一个值。没有在后台生成,因此没有使用“额外”内存。

¹ 就您的一生而言,请参阅 Eran 的回答


查看完整回答
反对 回复 2021-06-02
  • 3 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信