如果未找到元素,如何在java流中返回默认布尔值?

如果未找到元素,如何在java流中返回默认布尔值?,java,string,java-stream,optional,ignore-case,Java,String,Java Stream,Optional,Ignore Case,我想确定给定字符串是否与列表中的一个元素匹配(忽略大小写) 我正试图用Java8流实现这一点。下面是我使用.orElse(false)的尝试: publicstaticbooleanlistcontainstestword(列表,字符串搜索){ if(list!=null&&search!=null){ return list.stream().filter(值->值.equalsIgnoreCase(搜索)) .findFirst().orElse(false); } 返回false; }

我想确定给定字符串是否与
列表中的一个元素匹配(忽略大小写)

我正试图用Java8流实现这一点。下面是我使用
.orElse(false)
的尝试:

publicstaticbooleanlistcontainstestword(列表,字符串搜索){
if(list!=null&&search!=null){
return list.stream().filter(值->值.equalsIgnoreCase(搜索))
.findFirst().orElse(false);
}
返回false;
}
但这并不能编译

我应该如何编码以返回是否找到匹配项?

使用:

publicstaticbooleanlistcontainstestword(列表,字符串搜索){
if(list!=null&&search!=null){
return list.stream().anyMatch(search::equalsIgnoreCase);
}
返回false;
}

您有一个错误,因为
findFirst()
返回一个
可选的
,因为流管道由
字符串
元素组成。因此,不能使用
boolean
参数调用
orElse
(只有
String
参数才有效)

解决问题的直接方法是使用

findFirst().isPresent();
这样,如果
findFirst()
返回一个空的可选值,
isPresent()
将返回
false
,如果不返回,则返回
true

但最好是按照@Tagir Valeev的答案,使用
anyMatch

这是一行:

public static boolean listContainsTestWord(List<String> list, String search) {
    return list != null && search != null && list.stream().anyMatch(search::equalsIgnoreCase);
}
findFirst().isPresent();
public static boolean listContainsTestWord(List<String> list, String search) {
    return list != null && search != null && list.stream().anyMatch(search::equalsIgnoreCase);
}
if (list != null && search != null && list.stream().anyMatch("someString"::equalsIgnoreCase))