Java LongStream findFirst() Method

The findFirst() method in Java, part of the java.util.stream.LongStream interface, is used to return an OptionalLong describing the first element of the stream, or an empty OptionalLong if the stream is empty. This method is useful when you need to retrieve the first element from the stream.

Table of Contents

  1. Introduction
  2. findFirst() Method Syntax
  3. Understanding findFirst()
  4. Examples
    • Basic Usage
    • Using findFirst() with Filtered Streams
  5. Real-World Use Case
  6. Conclusion

Introduction

The findFirst() method is a terminal operation that returns an OptionalLong describing the first element of the stream, or an empty OptionalLong if the stream is empty. This method is useful when you need to get the first element from a stream, especially after applying various intermediate operations like filtering or sorting.

findFirst() Method Syntax

The syntax for the findFirst() method is as follows:

OptionalLong findFirst()

Parameters:

  • This method does not take any parameters.

Returns:

  • An OptionalLong describing the first element of the stream, or an empty OptionalLong if the stream is empty.

Throws:

  • This method does not throw any exceptions.

Understanding findFirst()

The findFirst() method returns the first element in the stream. It is a deterministic operation, meaning that it will always return the first element when called on a sequential stream. In the context of a parallel stream, it may have additional overhead to ensure the correct result, but it will still return the first element.

Examples

Basic Usage

To demonstrate the basic usage of findFirst(), we will create a LongStream and use findFirst() to retrieve the first element.

Example

import java.util.OptionalLong;
import java.util.stream.LongStream;

public class FindFirstExample {
    public static void main(String[] args) {
        LongStream stream = LongStream.of(1L, 2L, 3L, 4L, 5L);

        // Use findFirst() to retrieve the first element
        OptionalLong firstElement = stream.findFirst();

        // Print the first element if present
        firstElement.ifPresent(System.out::println);
    }
}

Output:

1

Using findFirst() with Filtered Streams

This example shows how to use findFirst() in combination with filtering to retrieve the first element that matches the filter condition.

Example

import java.util.OptionalLong;
import java.util.stream.LongStream;

public class FindFirstWithFilterExample {
    public static void main(String[] args) {
        LongStream stream = LongStream.of(10L, 20L, 30L, 40L, 50L);

        // Use findFirst() to retrieve the first element greater than 25
        OptionalLong firstElement = stream.filter(n -> n > 25).findFirst();

        // Print the first element if present
        firstElement.ifPresent(System.out::println);
    }
}

Output:

30

Real-World Use Case

Finding the First Transaction Above a Certain Amount

In real-world applications, the findFirst() method can be used to find the first transaction amount that exceeds a certain threshold from a stream of transaction values.

Example

import java.util.OptionalLong;
import java.util.stream.LongStream;

public class FindFirstTransactionExample {
    public static void main(String[] args) {
        LongStream transactionAmounts = LongStream.of(1000L, 2000L, 1500L, 3000L, 2500L);

        long threshold = 2000L;

        // Use findFirst() to find the first transaction above the threshold
        OptionalLong transaction = transactionAmounts.filter(amount -> amount > threshold).findFirst();

        // Print the transaction if present
        transaction.ifPresent(amount -> System.out.println("First transaction above " + threshold + ": " + amount));
    }
}

Output:

First transaction above 2000: 3000

Conclusion

The LongStream.findFirst() method is used to return an OptionalLong describing the first element of the stream, or an empty OptionalLong if the stream is empty. This method is particularly useful for retrieving the first element from a stream, especially after applying various intermediate operations like filtering or sorting. By understanding and using this method, you can efficiently manage and process streams of values in your Java applications.

Comments