Java 流 API 过滤器
javaobject oriented programmingprogramming更新于 2024/8/7 22:52:00
流过滤器函数返回由此流中满足指定谓词的项目组成的流。这是一个中级操作。这些操作始终是惰性的,即运行过滤器函数或其他中间操作实际上不会过滤任何内容;相反,它会生成一个新的流,当遍历时,该流包含满足所提供谓词的初始流的项目。
语法
Stream<T> filter(Predicate<? super T> predicate)
当 T 是 predicate 的输入类型并且 stream 是接口时。
返回类型
一个新的流。
实现
消除可能被分为 0 到 10 的数字范围的项目。
删除以特定索引开头的大写字母的条目。
删除以特定字母结尾的组件。
示例 1:filter() 方法,具有过滤可被 5 整除的元素的操作
// Java 程序获取由以下内容组成的流元素 import java.util.*; public class Example { public static void main(String[] args){ List<Integer> list = Arrays.asList(3, 4, 6, 12, 20); list.stream() .filter(num -> num % 5 == 0) .forEach(System.out::println); } }
输出
20
示例 2:filter() 方法,操作为过滤索引 1 处带有大写字母的元素
// Java 程序获取由元素组成的流 import java.util.stream.Stream; public class Example { public static void main(String[] args) { Stream<String> stream = Stream.of("class", "FOR", "QUIZ", "waytoclass"); stream.filter(str -> Character.isUpperCase(str.charAt(1))) .forEach(System.out::println); } }
输出
FOR QUIZ
示例 3:filter() 方法,用于过滤以自定义字母结尾的元素
// Java 程序获取由元素组成的流 import java.util.stream.Stream; public class Example { public static void main(String[] args){ Stream<String> stream = Stream.of("Class", "FOR", "Quiz", "WaytoClass"); stream.filter(str -> str.endsWith("s")) .forEach(System.out::println); } }
输出
Class WaytoClass
结论
改进 Java 代码功能的一种方法是利用 filter() 方法。与强制或有条不紊的方法相反。但是,在使用 filter() 函数时需要注意一些事项。
例如,链接多个过滤方法可能会导致代码运行缓慢。这样就可以创建一个包含满足谓词条件的元素的新流作为中间操作。因此,减少您进行的 filter() 调用数量的关键是将谓词合并为一个句子。