如果未找到元素,如何在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))