📅  最后修改于: 2023-12-03 15:01:35.786000             🧑  作者: Mango
Java8引入的Stream API提供了一种处理集合的新方式。其中,Filter是Stream API中最基本和常用的操作之一。
Filter是一种中间操作,它接收一个Predicate
具体来说,Filter通过遍历源Stream,对每个元素应用Predicate
代码示例:
List<String> list = Arrays.asList("apple", "banana", "orange", "lemon");
Stream<String> stream = list.stream();
//过滤出长度为5的字符串
Stream<String> result = stream.filter(s -> s.length() == 5);
result.forEach(System.out::println); //输出 "apple", "lemon"
上述代码中,我们首先获取了一个List
Filter操作不仅可以单独使用,还可以与其他Stream操作一同进行链式调用。例如,我们可以通过map操作将Stream
List<String> list = Arrays.asList("1", "2", "3", "4");
Stream<String> stream = list.stream();
//将Stream<String>变为Stream<Integer>,过滤出大于等于3的数
stream.map(Integer::parseInt)
.filter(n -> n >= 3)
.forEach(System.out::println); //输出 "3", "4"
Filter操作会对Stream中每个元素进行遍历和操作,因此在使用时需要注意性能问题。为了减轻压力,我们可以在调用filter前先进行类似于SQL的“where”子句过滤,尽可能减少元素的数量。
Java8 Stream API中的Filter是一种常用的中间操作,可以通过Predicate