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 所以你可以尝试使用:

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

Optional.get 将抛出 NoSuchElementException 如果您的可选为空,因此您可能想要使用第一个选项。