Java Stream filter()示例
Stream filter(Predicate predicate) 返回一个由这个流中符合给定谓词的元素组成的流。这是一个 中间操作。_这些操作总是懒惰的,即执行中间操作如filter()实际上并不执行任何过滤,而是创建一个新的流,当被遍历时,包含初始流中符合给定谓词的元素。
语法
Stream<T> filter(Predicate<? super T> predicate)
其中Stream是一个接口,T是谓词的输入类型。
返回类型: 一个新的流。
实现
- 过滤掉能被某个特定数字整除的元素,范围在0到10之间。
- 过滤掉在任何特定索引中带有大写字母的元素。
- 过滤掉以自定义字母结尾的元素。
例1: filter()方法的操作是过滤掉能被5除尽的元素。
// Java Program to get a Stream Consisting of the Elements
// of Stream that Matches Given Predicate for Stream filter
// (Predicate predicate)
// Importing required classes
import java.util.*;
// Class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a list of Integers
List<Integer> list = Arrays.asList(3, 4, 6, 12, 20);
// Getting a stream consisting of the
// elements that are divisible by 5
// Using Stream filter(Predicate predicate)
list.stream()
.filter(num -> num % 5 == 0)
.forEach(System.out::println);
}
}
输出
20
例2: filter()方法的操作是过滤掉索引为1的大写字母的元素。
// Java Program to Get Stream Consisting of Elements
// of Stream that Matches Given Predicate
// for Stream Filter (Predicate predicate)
// Importing required classes
import java.util.stream.Stream;
// Class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a stream of strings
Stream<String> stream = Stream.of(
"Geeks", "fOr", "GEEKSQUIZ", "GeeksforGeeks");
// Getting a stream consisting of the
// elements having UpperCase Character
// at custom index say be it '1'
// using Stream filter(Predicate predicate)
stream
.filter(
str -> Character.isUpperCase(str.charAt(1)))
.forEach(System.out::println);
}
}
输出
fOr
GEEKSQUIZ
例子3: filter()方法的操作是过滤掉以自定义字母结尾的元素,比如说为了实现这个目的,它是’s’。
// Java Program to Get a Stream Consisting ofElements
// of Stream that Matches Given predicate
// for Stream filter (Predicate predicate)
// Importing required classes
import java.util.stream.Stream;
// Class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a stream of strings
Stream<String> stream = Stream.of(
"Geeks", "foR", "GeEksQuiz", "GeeksforGeeks");
// Getting a stream consisting of the
// elements ending with 's'
// using Stream filter(Predicate predicate)
stream.filter(str -> str.endsWith("s"))
.forEach(System.out::println);
}
}
输出
Geeks
GeeksforGeeks