Назад к вопросам
Senior
4
Расскажи про Stream API: типы операций, разница между map и flatMap
Компании, где спрашивали
Octo
Ответ от нейросети
sobes.tech AI
Stream API в Java — это мощный инструмент для работы с коллекциями и последовательностями данных, позволяющий писать декларативный код для обработки данных.
Типы операций:
- Промежуточные (intermediate) — возвращают новый Stream, позволяют строить цепочку операций, например:
filter(),map(),flatMap(),sorted(),distinct(). - Терминальные (terminal) — завершают цепочку и возвращают результат или побочный эффект, например:
collect(),forEach(),reduce(),count().
Разница между map и flatMap:
mapпреобразует каждый элемент потока в один другой элемент, например, из строки в её длину.flatMapпреобразует каждый элемент в поток (Stream) элементов, а затем "расплющивает" (flatten) эти потоки в один общий поток.
Пример:
List<String> words = Arrays.asList("hello", "world");
// map: преобразуем каждое слово в массив символов
Stream<char[]> mapped = words.stream().map(word -> word.toCharArray());
// flatMap: преобразуем каждое слово в Stream<Character> и объединяем
Stream<Character> flatMapped = words.stream()
.flatMap(word -> word.chars().mapToObj(c -> (char)c));
// flatMap позволяет работать с вложенными структурами удобнее
Таким образом, flatMap полезен, когда из одного элемента нужно получить несколько элементов для дальнейшей обработки.