java - 使用 StreamEx 从 Stream 中删除空的 Optionals

标签 java java-8 java-stream streamex

我正在寻找一种使用 StreamEx 库仅流式传输非空 Optional 条目的优雅方式。或者标准库,如果可能的话。

目前我正在使用以下相当冗长的方法:

List<Optional<String>> list = 
   Arrays.asList(Optional.of("A"), Optional.empty(), Optional.of("B"));

List<String> nonEmpty = 
   StreamEx.of(list).filter(Optional::isPresent).map(Optional::get).toList();

我基本上是在寻找类似 StreamEx 的 nonNull 的东西方法,但对于可选

最佳答案

嗯,这已经被添加了,但只在 java-9 中:

list.stream()
    .flatMap(Optional::stream)
    .collect(Collectors.toList());

Stuart Marks 有一个后向端口 here

关于java - 使用 StreamEx 从 Stream 中删除空的 Optionals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419273/

相关文章:

java - 异常层次结构/try-multi-catch

java - 自定义 ArrayAdapter 上的 getFilter() 不起作用

java - session 过期时spring 3 mvc SessionAttributes中的默认对象

java - 使用 Java 8 流查找映射中的最小键

java-8 - Java 8 Stream在列表中查找与某些属性匹配的对象

java - 为什么条件运算符的结果与预期相反?

Java Unordered() 函数

java - Java 8 函数中的运行时异常

java - 找到流的最小元素,但如果 <= N 则尽早退出

java - 使用 Java 8 Stream API 中的条件修改数组列表