[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-dlya-chego-v-strimakh-prednaznacheny-metody-flatmap-flatmaptoint-flatmaptodouble-flatmaptolong":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},370,"dlya-chego-v-strimakh-prednaznacheny-metody-flatmap-flatmaptoint-flatmaptodouble-flatmaptolong",10,"java-8","Java 8+","☕","Для чего в стримах предназначены методы flatMap, flatMapToInt, flatMapToDouble, flatMapToLong?","\u003C!-- grade: junior\u002Fmiddle -->\n\n`flatMap()` — промежуточная операция, которая преобразует каждый элемент в стрим, а затем объединяет (выпрямляет) все полученные стримы в один. Это ключевое отличие от `map()`: если `map()` преобразует элемент в один элемент, то `flatMap()` — в ноль, один или несколько элементов.\n\n> **Аналогия из жизни:** `map` — это перевод каждого письма на другой язык (одно письмо на входе, одно на выходе). `flatMap` — это вскрытие конвертов с несколькими листами и раскладывание всех листов в одну стопку.\n\n```java\nStream.of(\"H e l l o\", \"w o r l d\")\n    .flatMap(s -> Arrays.stream(s.split(\" \")))\n    .toArray(String[]::new);\n\u002F\u002F [\"H\", \"e\", \"l\", \"l\", \"o\", \"w\", \"o\", \"r\", \"l\", \"d\"]\n```\n\nТипичные сценарии:\n\n- Объединение вложенных коллекций: `listOfLists.stream().flatMap(Collection::stream)`\n- Разбиение строк на слова\u002Fсимволы\n- Развёртывание `Optional` (до Java 9): `optional.map(...).flatMap(...)`\n\n`flatMapToInt()`, `flatMapToDouble()`, `flatMapToLong()` — аналоги, возвращающие соответствующий примитивный стрим.\n\n> **На собеседовании:** часто просят объяснить разницу между `map` и `flatMap`. Ответ: `map` оборачивает результат функции в стрим, `flatMap` — «выпрямляет» вложенный стрим. Если функция возвращает коллекцию, `map` даст `Stream\u003CList\u003CT>>`, а `flatMap` — `Stream\u003CT>`.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Для чего в стримах предназначены методы map, mapToInt, mapTo — Gymterview","`map()` — промежуточная операция, которая преобразует каждый элемент стрима с помощью заданной функции. Результат `map()` — новый стрим с преобразованными элеме","`map()` — промежуточная операция, которая преобразует каждый элемент стрима с помощью заданной функции. Результат `map()",[15,13],"`map()` — промежуточная операция, которая преобразует каждый элемент стрима с помощью заданной функции. Результат `map()` — новый стрим с преобразованными элементами.",true]