首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用StreamEx从流中删除空选项

使用StreamEx从流中删除空选项
EN

Stack Overflow用户
提问于 2018-01-24 09:47:18
回答 2查看 599关注 0票数 3

我正在搜索一种使用Optional库只流非空StreamEx条目的优雅方法。或者标准图书馆,如果可能的话。

目前,我正在使用以下非常详细的方法:

代码语言:javascript
复制
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方法的东西,但寻找的是Optional

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-24 10:01:12

这是添加的,但仅在java-9中:

代码语言:javascript
复制
list.stream()
    .flatMap(Optional::stream)
    .collect(Collectors.toList());

斯图亚特马克斯这里有一个后门。

票数 6
EN

Stack Overflow用户

发布于 2018-01-24 11:07:22

对StreamEx问题待办事项的一些研究揭示了第49期,它提供了一种更短的方法,并包含了关于这个主题的讨论:

代码语言:javascript
复制
List<String> nonEmpty = StreamEx.of(list).flatMap(StreamEx::of).toList();

更短,尽管它是否更易读是有待讨论。

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

https://stackoverflow.com/questions/48419273

复制
相关文章

相似问题

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