public void setSpeciality(String spec) {
if(specialities.stream().anyMatch(s-> s.equalsIgnoreCase(spec))) {
speciality =spec;
}
else
speciality = "General Practitioner";
}
我需要搜索一个名为specialities(不区分大小写)的数组列表^看到我的答案尝试^,但无法弄清楚答案中有什么错误。
答案 0 :(得分:4)
anyMatch
仅返回true
或false
,指示流中是否至少有1个满足谓词的元素。
您应该使用filter
和findFirst
,它们返回与谓词匹配的第一个元素:
speciality = specialities.stream()
.filter(spec::equalsIgnoreCase)
.findFirst()
.orElse("General Practitioner");
答案 1 :(得分:0)
只需包含word_list = splitter.split(line)
并将第一个字符转换为大写
speciality =spec.toLowerCase();
答案 2 :(得分:-1)
您正在压倒专业,因此每次您都会获得相同的结果。
如下所示更改代码
public void setSpeciality(String spec) {
if(specialities.stream().anyMatch(s-> s.equalsIgnoreCase(spec))) {
speciality =spec;
}else{
speciality = "General Practitioner";
}
}