Метод concat
Метод concat класса Stream объединяет два потока в один.
В первый параметр мы передаем первый поток, во второй параметр - второй поток.
Метод возвращает новый поток, который сначала выдает все элементы первого потока,
а затем все элементы второго потока. Исходные потоки при этом не изменяются.
Если один из переданных потоков является параллельным, результирующий поток
также будет параллельным.
Синтаксис
Stream.concat(stream1, stream2)
Пример
Давайте объединим два потока строк в один и выведем результат:
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<String> stream1 = Stream.of("a", "b", "c");
Stream<String> stream2 = Stream.of("d", "e");
Stream<String> res = Stream.concat(stream1, stream2);
res.forEach(System.out::println);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте объединим два потока чисел и соберем результат в список:
import java.util.List;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<Integer> stream1 = Stream.of(1, 2, 3);
Stream<Integer> stream2 = Stream.of(4, 5);
List<Integer> res = Stream.concat(stream1, stream2).toList();
System.out.println(res);
}
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте объединим поток с пустым потоком - результат будет содержать только элементы первого потока:
import java.util.List;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<String> stream1 = Stream.of("abcde");
Stream<String> stream2 = Stream.empty();
List<String> res = Stream.concat(stream1, stream2).toList();
System.out.println(res);
}
}
Результат выполнения кода:
["abcde"]