stream流filter多条件过滤
时间: 2023-09-13 18:08:00 浏览: 47
可以使用Java 8的Stream API中的filter方法,结合多个Predicate条件进行过滤,例如:
```java
List<String> list = Arrays.asList("apple", "banana", "cherry", "date", "eggfruit");
Predicate<String> startsWithC = str -> str.startsWith("c");
Predicate<String> lengthIs3 = str -> str.length() == 3;
List<String> filteredList = list.stream()
.filter(startsWithC.and(lengthIs3))
.collect(Collectors.toList());
System.out.println(filteredList); // Output: [cat]
```
这段代码会将列表中以字母"c"开头且长度为3的元素过滤出来。
相关问题
stream流filter多条件过滤多种方式
可以使用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表达式,也可以使用匿名内部类实现。
stream流filter过滤多条件
b'stream\xe6\xb5\x81filter\xe8\xbf\x87\xe6\xbb\xa4\xe5\xa4\x9a\xe6\x9d\xa1\xe4\xbb\xb6' 的意思是流过滤器过滤多条消息。