使用 Stream.filter(Predicate) 方法遍历所有元素并通过 Predicate 参数过滤所有符合给定条件的元素。
www. On IT Road .com
Java Stream filter() 示例
使用 Lambda 表达式过滤流
在这个 Java 示例中,我们正在迭代一个数字流。
我们从流中过滤所有偶数并将它们打印到控制台。
import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.stream() .filter(n -> n % 2 == 0) .forEach(System.out::println); } }
使用 Predicate 过滤流
迭代整数流并仅打印偶数的示例。
此示例使用 Predicate 类代替 lambda 表达式,尽管两者是相同的。
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Predicate<Integer> condition = new Predicate<Integer>() { @Override public boolean test(Integer n) { if (n % 2 == 0) { return true; } return false; } }; list.stream().filter(condition).forEach(System.out::println); } }
Java 过滤流并收集到列表中
我们可以使用 collect(Collectors.toList()) 方法将过滤后的元素流收集到一个 List
中。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> evenNumbers = list.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); } }
Java Stream filter() 和 map()一起使用 示例
我们可以使用 map() 方法收集流元素,然后将每个数字转换为其平方,然后再将其收集到List
。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> evenNumbers = list.stream() .filter(n -> n % 2 == 0) .map(n -> n * n) .collect(Collectors.toList()); System.out.println(evenNumbers); } }
Stream.filter()方法
stream.filter()
方法语法如下:
Stream<T> filter(Predicate<? super T> condition)
Predicate
是一个函数性接口,表示从流中过滤掉不匹配元素的条件。
filter()
是一个中间的Stream
操作。- 它返回一个
Stream
,由与给定谓词匹配的给定流的元素组成。 filter()
参数应该是无状态谓词,它应用于流中的每个元素以确定是否应该包含它。Predicate
是一个函数式接口。
所以,我们也可以传递 lambda 表达式。
- 它返回一个新的
Stream
,因此我们可以使用适用于任何流的其他操作。
日期:2020-09-17 00:10:03 来源:oir作者:oir