java->stream.filter()如何使其返回字符串

nimxete2  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(1070)

这个问题在这里已经有答案了

获取第一个元素并在应用函数后返回(3个答案)
上个月关门了。
所以我有一个任务,我需要使用lambda表达式来进行过滤搜索。简而言之,我有一个用户数据库,我需要为用户进行的每个搜索打印一条消息。我所做的是:

text=users.stream()
           .filter(c -> c.getName().equals(filter.getName()))
           .findFirst()
           .map( c -> {
               Final String message= c.getSearchOutput(filter.getTitle(); 
               return message;
           })
           .toString();

问题是我的文本是这样的
“可选:[在此处插入最后一条字符串消息]”
我需要公正
在此处插入最后一条字符串消息。。。。
如何改进lambda表达式?我需要这样做,因为我必须将文本解析为json对象,而我显然不能在lambda表达式的主体中这样做。

zzzyeukh

zzzyeukh1#

findFirst 返回一个 Optional 因此,您可以尝试使用: Optional.orElse / orElseGet / orElseThrow 方法:

text = users.stream()
    .filter(c -> c.getName().equals(filter.getName()))
    .findFirst().map( c -> {
        return c.getSearchOutput(filter.getTitle(); 
    }).orElse("");
``` `Optional.get` 方法:

text = users.stream()
.filter(c -> c.getName().equals(filter.getName()))
.findFirst().map( c -> {
return c.getSearchOutput(filter.getTitle();
}).get();
``` Optional.get 将抛出 NoSuchElementException 如果您的选项为空,那么您可能需要使用第一个选项。

相关问题