原因:
阿咚最近遇到Java1.8的Stream报出java.util.NoSuchElementException: No value present的异常。
然后查看如下源码
原来在使用stream流对数据进行过滤,filter()等操作时,数据中没有符合的数据,这时使用get()方法,就会报出上方的异常。
解决办法: Java1.8中提供了一个Optional类,来解决null值问题,并使用以下方法来做null值判断
示例代码:
T t=null;
Optional<T> optional=tList.stream() .filter(v->
Objects.nonNull(v.getPayEndTime()))
.min((v,v2)->{
if(v.getPayEndTime().isAfter(v2.getPayEndTime())){
return 0;
}else{
return 1;
}
});
if(optional.isPresent()){
t= optional.get();
}