首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OptionalInt可重用吗?

OptionalInt可重用吗?
EN

Stack Overflow用户
提问于 2015-10-11 11:11:32
回答 2查看 694关注 0票数 2

查看Java8文档for OptionalInt,似乎不能通过设置新值或清空现有值来重用OptionalInt。此外,JavaDoc只显示了通过调用静态方法初始化OptionalInt的两种方法--看起来像一个不可变的对象。

真的不能重用吗?

假设一个批处理,其中要处理的数据由一个int原语组成,它可以是可选的。对于每一行(假设它是数百万行),必须创建一个新的OptionalInt对象。目的是避免不必要的对象实例化和额外的垃圾收集。因此,我宁愿自己重新实现它,避免使用Java8实用程序类OptionalInt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-11 11:40:02

OptionalInt不可变的。这意味着,一旦创建了对象,它的状态就不能被修改。

OptionalInt是通过调用静态工厂empty()of(value)创建的。然后,有几种方法可以获得可选值(getAsInt()),使用默认值(如果没有值) (orElse(other))等等,但是您将找不到更新或清空当前值的方法。

在批处理示例中,不变性实际上是您希望拥有的东西,因为它确实有助于构建并发应用程序。。当您处理数以百万计的行时,您希望通过使用多线程来加快该进程。在多线程环境中处理可变对象是非常困难的

您不应该太担心所创建的新对象。通常情况下,他们是短暂的和JVM很好地处理这类对象。.实际上,看看这个问题:对于垃圾收集器来说,不可变对象更可取。

票数 5
EN

Stack Overflow用户

发布于 2015-10-11 12:38:37

当然,可选不是一个很好的散装加工中间容器。只代表最终结果是可以的。如果要批量处理原语值,请考虑使用IntStreal.reduce或其朋友。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33064298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档