stream流filter过滤集合
时间: 2023-11-01 12:56:04 浏览: 105
使用Java Stream的filter()方法可以对集合进行过滤。该方法接收一个Predicate参数,用于指定过滤条件。在过滤时,只会保留满足条件的元素,并返回一个新的Stream对象。
以下是一个示例代码,展示如何使用filter()方法过滤集合中身高在1.8米及以上的男生:
```
List<StudentInfo> boys = studentList.stream()
.filter(s -> s.getGender() && s.getHeight() >= 1.8)
.collect(Collectors.toList());
```
在上述代码中,我们首先通过stream()方法将集合转换为一个Stream对象。然后,使用filter()方法指定过滤条件,判断是否为男生(通过getGender()方法返回布尔值)且身高是否大于等于1.8米。最后,通过collect()方法将满足条件的元素收集到一个新的List中。
你可以根据实际需求修改filter()方法的条件,以实现不同的过滤效果。
相关问题
stream.filter 过滤集合
stream.filter 是 Java 8 中 Stream API 提供的一个方法,用于过滤集合中的元素。它接受一个 Predicate<T> 参数,该参数是一个函数式接口,用于定义过滤的条件。Predicate<T> 接口中有一个抽象方法 test(T t),用于判断给定的元素是否满足过滤条件。
下面是一个示例代码,展示如何使用 stream.filter 进行集合过滤:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 使用 stream.filter 过滤偶数
List<Integer> evenNumbers = numbers.stream()
.filter(number -> number % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出 [2, 4, 6, 8, 10]
}
}
```
在上面的示例中,我们创建了一个包含数字 1 到 10 的列表 numbers。然后使用 stream.filter 方法,传入一个 Lambda 表达式 number -> number % 2 == 0,该表达式判断元素是否为偶数。最后使用 collect(Collectors.toList()) 方法将过滤后的结果收集到一个新的列表 evenNumbers 中,并输出结果。
通过这种方式,我们可以方便地使用 stream.filter 方法来对集合进行过滤操作。
使用java 中的stream 的filter 过滤集合中 重复的元素
可以使用Java 8中的流(stream)和distinct()方法来过滤集合中的重复元素。具体的实现方式如下:
```
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 3, 5);
List<Integer> distinctList = list.stream().distinct().collect(Collectors.toList());
System.out.println(distinctList);
```
这段代码将输出结果:[1, 2, 3, 4, 5],即过滤掉了集合中的重复元素。
阅读全文