stream的filter多个条件
时间: 2023-07-13 14:18:54 浏览: 123
在使用 Java 8 中的 Stream 进行过滤时,我们可以使用 filter 方法来对元素进行筛选,如果需要使用多个条件进行过滤,可以在 filter 中使用逻辑运算符(&& 或 ||)来组合多个条件。
例如,对一个包含多个对象的 Stream 进行过滤,要求对象的某个属性值在一个范围内,并且另一个属性值等于某个特定值,可以这样实现:
```java
List<MyObject> filteredList = myObjectList.stream()
.filter(obj -> obj.getProp1() >= minVal && obj.getProp1() <= maxVal && obj.getProp2().equals(someVal))
.collect(Collectors.toList());
```
上述代码中,使用了逻辑运算符 && 来连接多个条件,obj.getProp1() >= minVal && obj.getProp1() <= maxVal && obj.getProp2().equals(someVal) 表示要求 obj 对象的 prop1 属性值在 minVal 和 maxVal 范围内,并且 prop2 属性值等于 someVal。
需要注意的是,在使用 && 和 || 这样的逻辑运算符时,需要注意运算符的优先级,可以使用括号来明确优先级,例如:
```java
List<MyObject> filteredList = myObjectList.stream()
.filter(obj -> (obj.getProp1() >= minVal && obj.getProp1() <= maxVal) || obj.getProp2().equals(someVal))
.collect(Collectors.toList());
```
上述代码中,使用了括号来明确了 || 运算符的优先级,先判断 obj.getProp1() 的值是否在 minVal 和 maxVal 范围内,再判断 obj.getProp2() 的值是否等于 someVal。
阅读全文