使用orElse()返回一个空字符串

时间:2018-09-08 20:51:48

标签: java java-8 java-stream

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

条件是:输入值或返回空字符串。像这样:

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

有什么解决办法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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