这个问题在这里已经有答案了:
获取第一个元素并在应用函数后返回(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表达式的主体中这样做。
1条答案
按热度按时间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();
}).get();
```
Optional.get
将抛出NoSuchElementException
如果您的选项为空,那么您可能需要使用第一个选项。