List<Integer> evenList = list.stream().filter(evenPredicate).collect(Collectors.toList());用法
时间: 2024-04-29 16:20:30 浏览: 10
这段代码使用了Java 8中的流式编程,做了以下几件事情:
1. 将一个List转换为一个流(stream)对象。
2. 使用filter方法,传入一个谓词(Predicate)对象,对流中的元素进行筛选,只留下符合条件的偶数。
3. 使用collect方法,将筛选过后的流转换为一个新的List对象。
最终的结果就是,evenList中只包含了原来List中的偶数元素。需要注意的是,evenPredicate是一个自定义的Predicate对象,其定义了一个test方法,用于判断流中的元素是否为偶数。
相关问题
stream流filter().filter()的作用
stream流的filter()方法用于过滤流中的元素,只保留满足条件的元素。它接受一个Predicate<T>类型的参数,该参数是一个函数式接口,用于判断流中的元素是否满足条件。如果满足条件,则将该元素保留下来,否则将其过滤掉。filter()方法返回一个新的流,其中包含满足条件的元素。
以下是一个示例代码,演示如何使用filter()方法过滤出List中的偶数元素:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenList = list.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenList); // 输出:[2, 4, 6]
```
上述代码中,我们首先创建了一个包含1到6的List,然后使用stream()方法将其转换为一个流。接着使用filter()方法过滤出偶数元素,最后使用collect()方法将过滤后的结果收集到一个新的List中。
List<>的匿名方法
List<>的匿名方法通常用于对列表中的元素进行筛选、转换等操作。下面是一个示例:
```
List<int> numList = new List<int> { 1, 2, 3, 4, 5 };
// 使用匿名方法筛选出所有偶数
List<int> evenList = numList.FindAll(delegate (int num) { return num % 2 == 0; });
// 使用匿名方法将所有数字乘以2并转换为字符串
List<string> strList = numList.ConvertAll(delegate (int num) { return (num * 2).ToString(); });
```
在上面的代码中,我们使用了两个不同的匿名方法,一个用于筛选偶数,一个用于将数字乘以2并转换为字符串。这些匿名方法通过delegate关键字定义,可以在列表的FindAll和ConvertAll方法中直接使用。