我可以不映射/ flatMap一个OptionalInt吗?
为什么在OptionalInt或其他原始可选的flatMap()
上似乎没有map()
/ flatMap()
方法?
stream()
映射操作允许在对象和基元之间进行转换。 但为什么Optional不利用这个呢?
OptionalInt profileId = OptionalInt.of(124); Optional 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 someMethod() { return Optional.of(42); } }
并用作方法参考:
.stream() .map(Foo::someMethod)
如果将someMethod的返回类型更改为OptionalInt :
public OptionalInt someMethod() { return OptionalInt.of(42); }
您不能将它用作方法参考,代码将无法编译:
.map(Foo::someMethod)
似乎在Java 9中, OptionalInt
将有一个stream
方法,为您提供一个包含0或1个元素的IntStream
。 在这个流上你当然可以使用map()
, flatMap()
或filter()
等。
对于Java 8,我没有任何内容可以添加到user2138356的答案中 。
- 如何在Java中找到未关闭的I / O资源?
- 栅格窗格可以自动调整其对象的大小以适应吗? 尝试将max_width和max_height设置为网格并让其调整内容大小。 JavaFX的
- 在Oracle数据库中持久处理并发请求?
- 为要分配给bean字段的操作配置请求参数
- 使用jsch库复制sftp中的文件
- 继续获取:BindingResult和bean名称’index’的普通目标对象都不可用作请求属性
- NoClassDefFoundError:注释处理期间的org / junit / AfterClass
- 有哪些JVM组装商?
- 如何在HBase上使用带有SingleColumnValueFilter的自定义比较器?