加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在List中查找匹配时的NoSuchElementException

发布时间:2020-12-15 04:33:16 所属栏目:Java 来源:网络整理
导读:以下老式,简单的代码工作正常(遍历字符串列表,并返回true,因为应该匹配): public boolean isMatched() { ListString stringList = Arrays.asList("str1","str2","str3"); String matchString = "str1"; for (String str : stringList) { if (StringUtils.eq
以下老式,简单的代码工作正常(遍历字符串列表,并返回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","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)

为什么我会收到此错误,我应该怎么做才能解决?

解决方法

Optional.get()仅在您知道其中存在实际值时使用.如果没有价值,它会抛出NSEE,正如您所发现的那样.

看起来你想要.findFirst().isPresent(),或者如下所述,anyMatch(谓词).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读