当前位置: 首页 > 知识库问答 >
问题:

是否有可能过滤掉空选项,并在Java流的单行中映射当前选项?

汪甫
2023-03-14

我经常发现自己在写这样的代码:

return collectionOfOptionals.stream()
    .filter(Optional::isPresent)
    .map(Optional::get)
    .collect(toList());

但是有没有办法把中间的两条线压缩成一个操作呢?

我可以这样做,但感觉更不满意:

return collectionOfOptionals.stream()
    .flatMap(o -> o.map(Stream::of).orElseGet(Stream::empty))
    .collect(toList());

共有1个答案

赫连俊雄
2023-03-14

基于这个问题,在Java9中这似乎是可能的。

return collectionOfOptionals.stream()
    .flatMap(Optional::stream)
    .collect(toList());

这样好多了。但是我已经做的将在Java8。

 类似资料:
  • 我想知道的所有值是否为空。除了必须检查映射中每个条目中的值之外,还有什么是最好的方法?

  • 我在主类中有这个类,用来在我的JTabbedPane上放置一个关闭按钮。问题是,例如,我打开了三个选项卡:journal、contact和upload,而contact选项卡是当前选择的选项卡。当我尝试关闭不是选定选项卡的日记选项卡时,关闭的是当前选定的选项卡。 这就是我调用选项卡的方法:

  • 我在datatable中使用了基于ajax jquery php的多选择选项过滤。它正在正确过滤记录,但更改选择选项过滤后,将显示一条警报消息 注:- (1) 数据表下方的计数未正确显示。 (2)显示一条警报消息。 这是有记录的数据表 选择选项后,将显示一条错误警报消息。 超文本标记语言代码:- Ajaxu公司搜索。php jQuery/Ajax代码:-

  • 问题内容: 为了调试目的,我想在处理输出流时将其内容转储到文件中。解析流将使用该流。 我可能会需要一个过滤器来存档它,在写我自己之前,我想问一下是否已经有现成的版本。 更新: 应该提到我在Android上工作。 我有什么: 所以我有一个和一个。 问题答案: 并不完全是准备推出一个,但是这可能会感兴趣。示例中有一个TeeOutputStream实现。

  • 我有以下Java 8代码: 它工作正常,但我想知道如何将调用链接到不使用。我试过使用,但它不允许返回另一个

  • 问题内容: 使用Java Stream时,映射后有时会出现空值。当前,当这些值需要省略时,我使用: 对于更实用的样式,可以快速编写一个小的辅助方法: 这样您就可以使用方法引用了: 我找不到这样的jdk方法,即使我怀疑它们中已经包含了一种。这里有其他方法吗?还是他们出于某种原因忽略了这一点? 问题答案: 您可以从Java8 SDK 使用Objects :: nonNull :