Иногда возникает необходимость объединить два различных стрима. В это статье мы расскажем вам, как это сделать несколькими способами.

Объединение с помощью Stream.concat

Это наиболее популярный и удобный способ объединения двух стримов.

Допустим, у вас есть два стрима:

Stream<String> s1 = Arrays.stream(new String[]{"A", "B", "C"});
Stream<String> s2 = Arrays.stream(new String[]{"D", "E", "F"});

Их можно объединить с помощью метода Stream.concat:

Stream.concat(s1, s2).forEach(System.out::println);

Stream.concat объединит элементы из двух стримов в один стрим.

Объединение стримов IntStream, LongStream, DoubleStream

Если вам требуется объединить элементы из стримов типа IntStream, LongStream или DoubleStream, можно воспользоваться тем же методом concat:

IntStream i1 = IntStream.range(1, 5);
IntStream i2 = IntStream.range(5, 11);
IntStream.concat(i1, i2).forEach(System.out::println);

Аналогичным образом объединяются элементы в стримах LongStream и DoubleStream.

Исходный код

import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class MergeTwoStreamsExample {
    public static void main(String[] args) {
        Stream<String> s1 = Arrays.stream(new String[]{"A", "B", "C"});
        Stream<String> s2 = Arrays.stream(new String[]{"D", "E", "F"});

        Stream.concat(s1, s2).forEach(System.out::println);

        IntStream i1 = IntStream.range(1, 5);
        IntStream i2 = IntStream.range(5, 11);
        IntStream.concat(i1, i2).forEach(System.out::println);

        // LongStream.concat(...)
        // DoubleStream.concat(...)
    }
}

Заключение

В данной статье мы рассмотрели, как объединить элементы двух стримов с помощью метода Stream.concat. Точно так же можно объединять стримы IntStream, LongStream и DoubleStream.

Как объединить два стрима