【发布时间】:2016-04-01 01:11:41
【问题描述】:
以下老式的简单代码可以正常工作(遍历字符串列表,并返回 true,因为应该有匹配项):
public boolean isMatched() {
List<String> stringList = Arrays.asList("str1", "str2", "str3");
String matchString = "str1";
for (String str : stringList) {
if (StringUtils.equals(str, matchString)) {
return true;
}
}
return false;
}
现在,我想做同样的事情,但改用 Java 8。到目前为止我有这个:
public boolean isMatched() {
List<String> stringList = Arrays.asList("str1", "str2", "str3");
String matchString = "str1";
return (stringList.stream().filter(str -> StringUtils.equals(matchString, str)).findFirst().get() != null);
}
使用第二种方法,我收到以下错误:
java.util.NoSuchElementException: No value present [junit] at java.util.Optional.get(Optional.java:135)
为什么我会收到这个错误,我应该怎么做才能解决它?
【问题讨论】:
标签: java filter java-8 java-stream optional