Java 流API过滤器
通过流过滤函数返回由满足指定的谓词的流的项目组成的流。这是一项中级操作。这些操作总是延迟执行,即运行过滤函数或其他中间操作并不真正过滤任何内容;相反,它生成一个新的流,在遍历时包括满足提供的谓词的初始流的项目。
语法
Stream<T> filter(Predicate<? super T> predicate)
当T是谓词的输入类型时,stream是一个接口。
返回类型
新的流。
实现
- 消除可能被分成0到10个数字范围内的项目。
-
删除以大写字母开头的条目。
-
删除以特定字母结尾的组件。
示例1:filter()方法用于过滤可被5整除的元素
// Java Program to get a Stream Consisting of the Elements
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 Program to Get Stream Consisting of Elements
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 Program to Get a Stream Consisting of Elements
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方法可能导致代码运行缓慢。这样做是为了创建一个包含满足谓词条件的元素的新流作为中间操作。因此,减少filter()调用的关键是将谓词合并为一个句子。