list.stream().filter().findany().orElse
时间: 2023-10-26 07:45:03 浏览: 156
()的作用是什么?
这段代码是Java 8中新引入的Stream API的使用,其作用是在给定列表中过滤出符合条件的元素,然后返回任意一个。如果没有符合条件的元素,则返回一个默认值。其中,filter()方法可以根据指定的条件对列表元素进行过滤,findAny()方法可以在符合条件的元素中随机返回一个,orElse()方法可以返回一个默认值。
相关问题
list.stream().filter(e -> (e.getType() + e.getStyle()).equalsIgnoreCase(code)).findFirst().orElse(null);
这是Java 8中的Stream API用法,对一个List进行流操作,筛选出符合条件的元素,并返回第一个符合条件的元素,如果没有符合条件的元素则返回null。
具体来说,这段代码是对名为list的List进行操作,其中每个元素都有一个type和一个style属性。filter()方法接收一个lambda表达式,该表达式对每个元素进行判断,只有当该元素的type和style拼接后与code相等时才返回true,从而保留该元素。findFirst()方法返回流中第一个元素,如果流为空则返回null。最后orElse(null)方法是为了避免空指针异常,在找不到符合条件的元素时返回null。
if(infoList.size() >0) { deliveryInfo = infoList.stream() .filter(e -> e.getStatus() == 0) .findFirst() .orElse(infoList.get(0)); } 简化
这段代码可以简化为:
```
deliveryInfo = infoList.stream()
.filter(e -> e.getStatus() == 0)
.findFirst()
.orElseGet(() -> infoList.get(0));
```
这样可以避免使用 `if` 语句,而是使用 `orElseGet` 方法来处理不存在符合条件的元素的情况。同时也可以使用 `==` 替代 `equals` 来进行比较,因为 `getStatus()` 方法返回的应该是一个基本类型的数值。如果不存在符合条件的元素,则返回列表中的第一个元素。此处使用 `orElseGet` 方法代替 `orElse` 方法,可以在不存在符合条件的元素时避免不必要的对象创建。
阅读全文