Java 8 Stream – findAny() & findFirst() Example
Hello. In this tutorial, we will explain the findAny() and findFirst() methods in java 8.
1. Introduction
Before diving deep into the practice stuff let us understand the findAny()
and findFirst()
methods in java8 programming.
Stream.findFirst()
– Returns an optional object containing first element of the given stream. It can also return anempty()
optional if the stream is emptyStream.findAny()
– Returns an optional object containing any one element of the given stream. It can also return an empty() optional if the stream is empty
2. Practice
Let us dive into some practice stuff from here and I am assuming that you already have the Java 1.8 or greater installed in your local machine. I am using JetBrains IntelliJ IDEA as my preferred IDE. You’re free to choose the IDE of your choice.
2.1 Utility class
Create a java file in the com.java8.util
package and add the following code. The class will act as a utility class for the creation of the house list.
House.java
package com.java8.util; import java.util.ArrayList; import java.util.List; import java.util.Random; enum Type { COTTAGE, COLONIAL, FARMHOUSE, FRENCH_COUNTRY, CAPE_GOD } public class House { private final int id; private final String name; private final String type; private House(final int id, final String name, final String type) { this.id = id; this.name = name; this.type = type; } public static List<House> createHouses() { final List<House> houses = new ArrayList<>(); for (int i = 0; i < 10; i++) { final Type type = Type.values()[new Random().nextInt(5)]; houses.add(new House(i, "house-" + i, type.name())); } return houses; } public int getId() { return id; } public String getName() { return name; } public String getType() { return type; } @Override public String toString() { return "House{" + "id=" + id + ", name='" + name + '\'' + ", type='" + type + '\'' + '}'; } }
2.2 Understanding methods
Create a java file in the com.java8
package and add the following code. The class will show the implementation of the findAny()
and findFirst()
methods.
Demo1.java
package com.java8; import com.java8.util.House; import java.util.Optional; public class Demo1 { /* Stream.findAny() - Returns an optional object containing any one element of the given stream. It can also return an empty() optional if the stream is empty. Optional<T> findAny() */ private static void findAnyImplementation() { System.out.println("----- findAny() implementation -----"); final Optional<House> optional = House.createHouses() .stream() .filter(house -> house.getType().equals("COTTAGE")) .findAny(); if (optional.isPresent()) { System.out.println(optional.get()); } else { System.out.println("No data"); } } /* Stream.findFirst() - Returns an optional object containing first element of the given stream. It can also return an empty() optional if the stream is empty. Syntax :- Optional<T> findFirst() */ private static void findFirstImplementation() { System.out.println("\n----- findFirst() implementation -----"); final Optional<House> optional = House.createHouses() .stream() .filter(house -> house.getType().equals("FARMHOUSE")) .findFirst(); if (optional.isPresent()) { System.out.println(optional.get()); } else { System.out.println("No data"); } } public static void main(String[] args) { findAnyImplementation(); findFirstImplementation(); } }
Run the file and if everything goes well the following output will be logged in the IDE console.
Console output
----- findAny() implementation ----- House{id=1, name='house-1', type='COTTAGE'} ----- findFirst() implementation ----- House{id=2, name='house-2', type='FARMHOUSE'}
That is all for this tutorial and I hope the article served you with whatever you were looking for. Happy Learning and do not forget to share!
3. Summary
In this tutorial, we learned findAny()
and findFirst()
methods introduced in java8 programming along with the implementation. The two methods are used to find anyone or the first element from the given stream. You can download the source code from the Downloads section.
4. Download the Project
This was a tutorial on learning and implementing the findAny()
and findFirst()
methods in java8 programming.
You can download the full source code of this example here: Java 8 Stream – findAny() & findFirst() Example