Pages

Sunday, July 5, 2020

Stream anyMatch() Method in Java 8 to find the value in the Collection or Stream

1. Introduction


In this article,  You'll be learning how to use the new java 8 Stream API method anyMatch() with Examples.

anyMatch(): This method returns whether any elements of this stream match the provided predicate. It may not evaluate the predicate on all elements if not necessary for determining the result. 

This is a short circuit terminal operation.

Java 8 Stream anyMatch() Method to find the value in the Collection or Stream

Java 8 Stream anyMatch() Examples

2. anyMatch() Syntax


This method takes Predicate as an input argument that evaluates the given condition. If the given condition is met then it does not check the condition for the remaining elements in the list or collection. Then, It returns true on the first match and returns false if no match is found.

boolean anyMatch(Predicate<? super T> predicate)

3. anyMatch() Example to check Even Number


package com.javaprogramto.java8.anymatch;

import java.util.stream.Stream;

public class AnyMatchEvenExample {

    public static void main(String[] args) {

        Integer[] numbers = {1, 3, 5, 7, 8, 9};

        Stream<Integer> intStream = Stream.of(numbers);

        boolean matchFound = intStream.anyMatch(number -> number % 2 == 0);

        if(matchFound){
            System.out.println("int array has even number");
        } else {
            System.out.println("int array has no even number");
        }
    }
}

anyMatch() Example to check Even Number.png


Output:

int array has even number

4. anyMatch() Example To Check Salary > 10000 and Designation Manager


package com.javaprogramto.java8.anymatch;

import java.util.stream.Stream;

public class AnyMatchSalary {

    public static void main(String[] args) {

        Employee e1 = new Employee(100, 10000, "SE");
        Employee e2 = new Employee(101, 20000, "Manager");
        Employee e3 = new Employee(102, 30000, "manager");

        Stream<Employee> empStream = Stream.of(e1, e2, e3);

        boolean foundEmp = empStream.anyMatch(emp -> emp.getDesgination().equalsIgnoreCase("Manager") && emp.getSalary() > 10000);

        if(foundEmp){
            System.out.println("Found manager salaray > 10000");
        } else {
            System.out.println("No manager with salary > 10000");
        }

        Stream<Employee> empStream2 = Stream.of(e1, e2, e3);

        boolean foundEmp2 = empStream2.anyMatch(emp -> emp.getDesgination().equalsIgnoreCase("SE") && emp.getSalary() > 10000);

        if(foundEmp2){
            System.out.println("Found SE salaray > 10000");
        } else {
            System.out.println("No SE with salary > 10000");
        }

    }
}

class Employee {

    private int id;
    private long salary;
    private String desgination;

    public Employee(int id, long salary, String desgination) {
        this.id = id;
        this.salary = salary;
        this.desgination = desgination;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public long getSalary() {
        return salary;
    }

    public void setSalary(long salary) {
        this.salary = salary;
    }

    public String getDesgination() {
        return desgination;
    }

    public void setDesgination(String desgination) {
        this.desgination = desgination;
    }
}

Output:


Found manager salaray > 10000
No SE with salary > 10000


5. anyMatch() on Empty Stream



package com.javaprogramto.java8.anymatch;

import java.util.stream.Stream;

public class AnyMatchOnEmptyStream {

    public static void main(String[] args) {

        Stream<String> emptyStream = Stream.empty();

        boolean found = emptyStream.anyMatch(str -> str.length() > 0);

        if(found){
            System.out.println("Stream has values");
        } else {
            System.out.println("Stream is empty and no values");
        }
    }
}



anyMatch() on Empty Stream.png


Output:

Stream is empty and no values

6. Difference Between anyMatch() and contains() method


Actually, Both of these two methods work similarly but anyMatch() works only with Streams and whereas contains() only with the List or Set implementations.

If you are on Java 8 it is good to use the Stream.anyMatch() method.

7. Conclusion 


In this article, You have seen how to use Stream.anyMatch() method which is shorter version of the contains() method.

If any of the elements in the stream matches the given predicate then it stops executing the predicate on the remaining elements of the stream.

As usual, All examples are shown over GitHub.

Stream API

Ref

Beginnersbook

No comments:

Post a Comment

Please do not add any spam links in the comments section.