List<Integer> evenList = list.stream().filter(evenPredicate).collect(Collectors.toList());用法
时间: 2024-04-29 09:20:30 浏览: 130
这段代码使用了Java 8中的流式编程,做了以下几件事情:
1. 将一个List转换为一个流(stream)对象。
2. 使用filter方法,传入一个谓词(Predicate)对象,对流中的元素进行筛选,只留下符合条件的偶数。
3. 使用collect方法,将筛选过后的流转换为一个新的List对象。
最终的结果就是,evenList中只包含了原来List中的偶数元素。需要注意的是,evenPredicate是一个自定义的Predicate对象,其定义了一个test方法,用于判断流中的元素是否为偶数。
相关问题
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }用法
这是 Java 8 中的一个函数式接口 `Predicate<T>`,它接受一个泛型参数 `T`,并定义了一个抽象方法 `test(T t)`,该方法接受一个 `T` 类型的参数,并返回一个 `boolean` 类型的结果。该接口通常用于判断某个对象是否符合某个条件,常见的例子包括过滤集合中的元素、筛选符合要求的文件等。
例如,可以使用 `Predicate` 接口过滤集合中的偶数元素:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
Predicate<Integer> evenPredicate = n -> n % 2 == 0;
List<Integer> evenList = list.stream().filter(evenPredicate).collect(Collectors.toList());
```
上述代码中,`evenPredicate` 是一个 `Predicate` 对象,它定义了一个判断整数是否为偶数的条件,然后使用 `filter` 方法过滤集合中符合条件的元素,最后将结果收集到一个新的集合 `evenList` 中。
需要注意的是,`Predicate` 接口是一个函数式接口,因此可以使用 lambda 表达式或方法引用来创建该接口的实例。
stream流filter过滤list
stream流的filter方法可以用于过滤list中的元素,它接受一个Predicate参数,该参数是一个函数式接口,用于判断元素是否符合过滤条件。filter方法会返回一个新的Stream对象,其中包含符合条件的元素。需要注意的是,filter方法并不会改变原始的list对象,而是返回一个新的Stream对象,因此如果需要修改过滤后的数据,需要新建对象。
举个例子,假设我们有一个List<Integer>对象,其中包含1到10的整数,我们可以使用filter方法过滤出其中的偶数:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenList = list.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
```
上述代码中,我们使用stream方法将list转换为Stream对象,然后使用filter方法过滤出其中的偶数,最后使用collect方法将结果转换为List对象。在这个例子中,evenList将包含2, 4, 6, 8, 10这些偶数。
阅读全文
相关推荐
















