Java Stream API:使用filter方法进行数据筛选
2024.01.17 11:32浏览量:11简介:在Java 8中,引入了一个新的并发编程模型,称为Stream API。它允许我们以声明式方式处理数据集合,包括数据筛选。filter方法就是其中之一,它用于从Stream中筛选出满足指定条件的元素。
Java Stream API中的filter方法用于从Stream中筛选出满足指定条件的元素。它接受一个Predicate(谓词)作为参数,该谓词定义了筛选条件。以下是一个简单的示例,展示了如何使用filter方法来筛选出列表中的偶数:
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class FilterExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 使用filter方法筛选出偶数List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());System.out.println(evenNumbers); // 输出:[2, 4, 6, 8, 10]}}
在上面的示例中,我们首先创建了一个包含整数的列表。然后,我们使用stream()方法将列表转换为Stream对象。接下来,我们调用filter方法,并传递一个Lambda表达式作为参数。Lambda表达式n -> n % 2 == 0定义了筛选条件:只保留偶数。最后,我们使用collect方法将筛选后的Stream转换回列表。输出结果为[2, 4, 6, 8, 10],即原始列表中的所有偶数。
除了在集合上使用filter方法外,还可以使用filter方法对Stream中的每个元素进行操作。以下是一个示例,演示了如何使用filter方法来筛选出列表中的偶数,并将它们乘以2:
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class FilterExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 使用filter方法筛选出偶数,并将它们乘以2List<Integer> evenNumbersMultipliedByTwo = numbers.stream().filter(n -> n % 2 == 0).map(n -> n * 2).collect(Collectors.toList());System.out.println(evenNumbersMultipliedByTwo); // 输出:[4, 8, 12, 16, 20]}}
在上面的示例中,我们首先创建了一个包含整数的列表。然后,我们使用stream()方法将列表转换为Stream对象。接下来,我们调用filter方法来筛选出偶数。然后,我们调用map方法将筛选后的Stream中的每个元素乘以2。最后,我们使用collect方法将结果转换回列表。输出结果为[4, 8, 12, 16, 20],即原始列表中的所有偶数乘以2后的结果。
需要注意的是,filter方法并不会改变原始集合中的元素。它只是根据指定的条件从原始集合中筛选出符合条件的元素,并返回一个新的Stream对象。如果需要修改原始集合中的元素,可以使用其他操作符,例如map或reduce。

发表评论
登录后可评论,请前往 登录 或 注册