【问题标题】:Return an empty String with orElse() [closed]使用 orElse() 返回一个空字符串 [关闭]
【发布时间】:2018-09-08 20:51:48
【问题描述】:

我需要从对象列表 (List<MyObj>) 中提取一个值以将其放入地图中。

条件是:放入值或返回空字符串。类似的东西:

String score =
        collect.stream()
                .map(f -> f.getScore())
                .filter(filterScore("9096"))
                .orElse(() -> "");

有什么解决办法吗?

【问题讨论】:

  • 输入值或返回一个空字符串有点没有意义......
  • 它从源填充地图。
  • 所以您想要的只是如果该值存在以填充某个地图?如果是这样,关键和价值是什么? return an empty String 和它有什么关系?
  • MyObj.getScore()的类型是什么?
  • 你这样做是为了这个目的吗? :) 我只是想知道是否有可能做类似的事情 什么类似?您是否了解这里可能没有人真正了解您甚至可能需要什么?如果您提供详细信息并准确表达您的意思,人们愿意提供帮助

标签: java java-8 java-stream


【解决方案1】:

orElse 采用一个值(在您的情况下为 String),而不是 Supplier。此外,您缺少一个查找项:

String score = 
    collect.stream()
           .map(f -> f.getScore())
           .filter(filterScore("9096"))
           .findFirst()
           .orElse("");

【讨论】:

    【解决方案2】:

    您需要使用 findFirst 来返回过滤列表的第一个元素的可选项或空的可选项。

    String score = collect.stream()
        .map(f -> f.getScore())
        .filter(filterScore("9096"))
    .findFirst()
    .orElse("");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多