Назад к вопросам
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 полезен, когда из одного элемента нужно получить несколько элементов и работать с ними как с единым потоком.