从stream中获取对象导致的 java.util.NoSuchElementException: No value present
目录
从stream中获取对象导致的 java.util.NoSuchElementException: No value present
1 异常情况![](https://i-blog.csdnimg.cn/blog_migrate/6702539670e1a6e065fb17ab2e10701d.png)
2.代码示例
List<String> strs = Arrays.asList("d", "b", "a", "c", "a");
String ff = strs.stream().filter(str -> str.equals("f")).findFirst().get();
3.产生原因
使用stream处理集合为空时调用get()方法,抛出NoSuchElementException
4.解决方式
4.1方式1:
Optional<String> opt = strs.stream().filter(str -> str.equals("f")).findFirst();
if(opt != null && opt.isPresent()){
String ff = opt.get();
System.out.println(ff);
}else {
System.out.println("ceshi");
}
4.2解决方式2
String ff = strs.stream().filter(str -> str.equals("f")).findFirst().orElse(null);
if(ff == null){
System.out.println("测试");
}