Java -> Stream.filter() 如何使它成为 return 字符串
Java -> Stream.filter() how to make it return a String
所以我有这个任务,我需要在其中使用 lambda 表达式进行过滤搜索。简而言之,我有一个用户数据库,我需要为用户进行的每次搜索打印一条消息。我所做的是:
text=users.stream()
.filter(c -> c.getName().equals(filter.getName()))
.findFirst()
.map( c -> {
Final String message= c.getSearchOutput(filter.getTitle();
return message;
})
.toString();
问题是我的文字是这样的
"Optional:[insert Final String message here]"
而且我需要公正
insert Final String message here....
如何改进这个 lambda 表达式?我需要这样做,因为我必须将文本解析为 JSON 对象,而我显然不能在 lambda 表达式的主体中完成它。
findFirst
returns 和 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
如果您的可选为空,因此您可能想要使用第一个选项。
所以我有这个任务,我需要在其中使用 lambda 表达式进行过滤搜索。简而言之,我有一个用户数据库,我需要为用户进行的每次搜索打印一条消息。我所做的是:
text=users.stream()
.filter(c -> c.getName().equals(filter.getName()))
.findFirst()
.map( c -> {
Final String message= c.getSearchOutput(filter.getTitle();
return message;
})
.toString();
问题是我的文字是这样的
"Optional:[insert Final String message here]"
而且我需要公正
insert Final String message here....
如何改进这个 lambda 表达式?我需要这样做,因为我必须将文本解析为 JSON 对象,而我显然不能在 lambda 表达式的主体中完成它。
findFirst
returns 和 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
如果您的可选为空,因此您可能想要使用第一个选项。