Методы flatMap(), flatMapToInt(), flatMapToDouble() и flatMapToLong() в Stream API используются для сглаживания потоков. Они преобразуют каждый элемент входного потока в ноль или более элементов другого потока, а затем объединяют эти полученные потоки в один результирующий плоский поток.
Основные отличия:
flatMap(): Принимает функцию, которая возвращает Stream<R>, и объединяет эти потоки в один Stream<R>.flatMapToInt(): Принимает функцию, которая возвращает IntStream, и объединяет эти потоки в один IntStream.flatMapToDouble(): Принимает функцию, которая возвращает DoubleStream, и объединяет эти потоки в один DoubleStream.flatMapToLong(): Принимает функцию, которая возвращает LongStream, и объединяет эти потоки в один LongStream.Пример использования flatMap():
java
Пример использования flatMapToInt():
java
Таблица сравнения:
| Метод | Входная функция возвращает | Результирующий поток |
|---|---|---|
flatMap() | Stream<R> | Stream<R> |
flatMapToInt() | IntStream | IntStream |
flatMapToDouble() | DoubleStream | DoubleStream |
flatMapToLong() | LongStream | LongStream |
Основное назначение этих методов — преобразование каждого элемента потока в ноль или более элементов другого потока и последующее объединение этих потоков в один. Это часто используется для работы с вложенными структурами данных или когда один входной элемент может породить множество выходных.