- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
为什么在 OptionalInt 或其他原始可选风格上似乎没有 map()
/flatMap()
方法?
stream()
映射操作允许对象和原语之间的转换。但是为什么 Optional 不利用这个呢?
OptionalInt profileId = OptionalInt.of(124);
Optional<Profile> profile = profileId.map(i -> getProfile(i)); //no such valid map() method!
最佳答案
原始可选项在设计上没有 map、flatMap 和 filter 方法。
此外,根据 Java8 in Action p.305你不应该使用它们。在流上使用原语的理由是性能原因。在大量元素的情况下,装箱/拆箱开销很大。但这是毫无意义的,因为 Optional 中只有一个元素。
此外,考虑示例:
public class Foo {
public Optional<Integer> someMethod() {
return Optional.of(42);
}
}
以及作为方法引用的用法:
.stream()
.map(Foo::someMethod)
如果将 someMethod 的返回类型更改为 OptionalInt:
public OptionalInt someMethod() {
return OptionalInt.of(42);
}
您不能将其用作方法引用,代码将无法编译:
.map(Foo::someMethod)
关于java - 我不能映射/flatMap 一个 OptionalInt 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104968/
我读到Why should Java 8's Optional not be used in arguments 。但是Optional(Int|Long|Double)呢? ,是否有任何反对使用它们
查看 OptionalInt 的 Java8 文档,似乎不能通过设置新值或清空现有值来重用 OptionalInt 。此外,JavaDoc 仅显示了两种通过调用静态方法初始化 OptionalInt
查看 java.util.OptionalInt 的源代码,一个可选的 int 由一个 int value 和一个 boolean isPresent 组成。获取空可选 int 的唯一方法是通过返回
IntStream类有map()、mapToObj()、mapToLong()和 mapToDouble() 方法,但是 OptionalInt 类中似乎缺少这些方法。 缺少这些方法是否有充分的理由?
我有一个 Optional,我想将其“转换”为 OptionalInt,但似乎没有一种简单的方法可以做到这一点。 这是我想做的(人为的例子): public OptionalInt getInt()
OptionalInt max = IntStream.of(arr).max(); 或者 int maximum = 0; for (int i : arr) { maximum = Ma
没有的原因是什么: OptionalInt.ofNullable(Integer); 如果您想将可选/可为空的 Integer 转换为 OptionalInt,这似乎是一个完美的选择。我目前正在使用我
在浏览 java.util 的文档时包,我惊讶地发现Optional和 OptionalInt彼此没有任何关系。这似乎很难相信,因为这表明它们是不相关的类。 为什么它们没有一个通用的接口(interf
为什么在 OptionalInt 或其他原始可选风格上似乎没有 map()/flatMap() 方法? stream() 映射操作允许对象和原语之间的转换。但是为什么 Optional 不利用这个呢?
当在热代码路径中使用时,调用返回专门可选类型的函数是否会以增加 GC 压力为代价,而不是返回原始值以指示不存在(Integer.MIN_VALUE,对于例如)? 编辑 我不假设它们会像任何其他类一样执
我是一名优秀的程序员,十分优秀!