Stream filter() operation in Java is an intermediate operation, and it is used to filter stream elements based on a given predicate. It accepts Predicate functional interface as an input and returns a Stream.
Syntax
Stream<T> filter(Predicate<? super T> predicate)
Java Stream filter() operation – examples
Example 1:
Create a program that takes a list of Integers, filters all elements, and returns a new list consisting only of even numbers.
class Test {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
List<Integer> filteredNumbers = numbers.stream()
.filter(number -> number % 2 == 0)
.collect(Collectors.toList());
System.out.println(filteredNumbers);
}
}
Output: [2, 4, 6, 8, 10]
Example 2:
Let’s create a Student class:
class Student {
private String firstName;
private String lastName;
private String grade;
public Student(String firstName, String lastName, String grade) {
this.firstName = firstName;
this.lastName = lastName;
this.grade = grade;
}
public String getGrade() {
return grade;
}
@Override
public String toString() {
return "student: {" + firstName + " " + lastName + " " + grade + "} ";
}
}
Now, let’s filter all students which grade is higher than 7:
class Test {
public static void main(String[] args) {
List<Student> filteredStudents = getStudents().stream()
.filter(student -> student.getGrade() > 7)
.collect(Collectors.toList());
System.out.println(filteredStudents);
}
private static List<Student> getStudents() {
List<Student> students = new ArrayList<>();
students.add(new Student("Steve", "Rogers", 8));
students.add(new Student("John", "Doe", 5));
students.add(new Student("Melissa", "Smith", 7));
students.add(new Student("Megan", "Norton", 4));
students.add(new Student("Tom", "Johnson", 9));
return students;
}
}
Output: [student: {Steve Rogers 8} , student: {Tom Johnson 9} ]
I hope this tutorial was helpful to you. To learn more, check out other Java Functional Programming tutorials.