Sobes.tech
Назад к вопросам
Junior — Middle
66

Объясните концепцию метода flatMap в Java Stream API и его отличие от map.

Компании, где спрашивали
JSA Group

Ответ от нейросети

sobes.tech AI

Метод flatMap в Java Stream API используется для преобразования каждого элемента потока в другой поток, а затем объединяет ("сплющивает") все эти потоки в один единый поток. В отличие от map, который преобразует каждый элемент в один элемент другого типа, flatMap преобразует каждый элемент в поток элементов и объединяет их.

Пример:

List<String> words = Arrays.asList("hello", "world");

// map: преобразует каждое слово в массив символов, но результат - поток массивов
Stream<char[]> mapped = words.stream().map(word -> word.toCharArray());

// flatMap: преобразует каждое слово в поток символов и объединяет их в один поток символов
Stream<Character> flatMapped = words.stream()
    .flatMap(word -> word.chars().mapToObj(c -> (char) c));

flatMapped.forEach(System.out::println);

Таким образом, flatMap полезен, когда из одного элемента нужно получить несколько элементов и работать с ними как с единым потоком.