Streams – filter() operation

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.

 

Leave a Reply

Your email address will not be published. Required fields are marked *