Java Stream concat()

In this guide, you will learn about the Stream concat() method in Java programming and how to use it with an example.

1. Stream concat() Method Overview

Definition:

The Stream.concat() method is a static utility method that is used to concatenate two streams into a single stream. The resulting stream will contain elements from both input streams in the order they appear.

Syntax:

static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)

Parameters:

- a: the first stream.

- b: the second stream.

Key Points:

- It's a static method and does not operate on a stream instance.

- It is an intermediate operation, meaning the concatenation does not happen immediately. Instead, the operation is executed only when a terminal operation is invoked on the concatenated stream.

- If either stream is parallel, the resulting stream is also parallel.

- Closing the concatenated stream closes both input streams.

- Concatenation is lazy, meaning elements are consumed from the input streams as they are required.

- Care should be taken when using infinite streams with concat, as it can lead to unintended infinite sequences.

2. Stream concat() Method Example

import java.util.stream.Stream;

public class StreamConcatExample {
    public static void main(String[] args) {
        Stream<String> fruitsStream = Stream.of("Apple", "Banana", "Cherry");
        Stream<String> veggiesStream = Stream.of("Artichoke", "Broccoli", "Carrot");

        // Concatenate the two streams
        Stream<String> concatenatedStream = Stream.concat(fruitsStream, veggiesStream);

        // Print the concatenated stream
        concatenatedStream.forEach(System.out::println);
    }
}

Output:

Apple
Banana
Cherry
Artichoke
Broccoli
Carrot

Explanation:

In the provided example: 

We have two streams, one containing fruit names and another containing vegetable names. 

Using Stream.concat(), we concatenate these two streams into a single stream. 

We then print the concatenated stream, which first displays fruits followed by vegetables.

Comments