Optional<ProductSkuPictureEntity> min = v.stream().collect(Collectors.minBy((s1, s2) -> s1.getPictureSort() - s2.getPictureSort())); map.put(k, min.get().getPictureUrl());代码中min.get()为什么会返回一个空值
时间: 2023-06-10 10:07:38 浏览: 78
List<Long>转一维数组 Long[](csdn)————程序.pdf
5星 · 资源好评率100%
`min.get()` 返回空值的原因是,Stream中的元素集合`v`是空的。如果`v`为空,那么`min`就是一个空的Optional,调用`min.get()`就会抛出NoSuchElementException异常。
为了避免这种情况,可以在调用`min.get()`之前先使用`min.isPresent()`方法进行判断,如果`min.isPresent()`为`false`,说明Optional中没有值,就可以采取其他的处理措施。例如可以在没有找到最小元素时设置一个默认值,或者抛出一个自定义的异常。例如:
```
Optional<ProductSkuPictureEntity> min = v.stream().collect(Collectors.minBy((s1, s2) -> s1.getPictureSort() - s2.getPictureSort()));
if (min.isPresent()) {
map.put(k, min.get().getPictureUrl());
} else {
// 没有找到最小元素的处理逻辑
}
```
阅读全文