stream流filter多条件过滤多种方式
时间: 2023-09-11 13:08:58 浏览: 400
可以使用Java 8中的Stream API,通过多次调用filter方法实现多条件过滤。例如:
```
List<Person> people = ... // 假设有一个Person对象的列表
List<Person> filteredPeople = people.stream()
.filter(p -> p.getAge() > 18) // 过滤出年龄大于18岁的人
.filter(p -> p.getGender() == Gender.MALE) // 过滤出男性
.filter(p -> p.getCity().equals("Shanghai")) // 过滤出住在上海的人
.collect(Collectors.toList()); // 将过滤后的结果转换为列表
```
除了使用多次filter方法,还可以使用Predicate接口实现多条件过滤。例如:
```
Predicate<Person> agePredicate = p -> p.getAge() > 18;
Predicate<Person> genderPredicate = p -> p.getGender() == Gender.MALE;
Predicate<Person> cityPredicate = p -> p.getCity().equals("Shanghai");
List<Person> filteredPeople = people.stream()
.filter(agePredicate.and(genderPredicate).and(cityPredicate))
.collect(Collectors.toList());
```
以上都是使用Lambda表达式实现的多条件过滤。如果不熟悉Lambda表达式,也可以使用匿名内部类实现。
阅读全文