[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-dlya-chego-v-strimakh-primenyayutsya-metody-foreach-i-foreachordered":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},365,"dlya-chego-v-strimakh-primenyayutsya-metody-foreach-i-foreachordered",10,"java-8","Java 8+","☕","Для чего в стримах применяются методы forEach и forEachOrdered?","`forEach()` и `forEachOrdered()` — терминальные операции, которые применяют заданную функцию (`Consumer`) к каждому элементу стрима. Разница проявляется при параллельной обработке.\n\n| Метод | Гарантия порядка | Используется с |\n|-------|-----------------|----------------|\n| `forEach()` | Нет (при параллельном стриме порядок произвольный) | Когда порядок не важен |\n| `forEachOrdered()` | Да (сохраняет порядок источника) | Когда порядок важен |\n\nДля последовательного стрима оба метода работают одинаково — в порядке следования элементов. Разница возникает только при использовании `parallelStream()` или `.parallel()`.\n\n```java\nList.of(1, 2, 3, 4, 5).parallelStream()\n    .forEach(System.out::print);        \u002F\u002F порядок не гарантирован: например, 35241\n\nList.of(1, 2, 3, 4, 5).parallelStream()\n    .forEachOrdered(System.out::print); \u002F\u002F всегда: 12345\n```\n\nСледует помнить, что `forEachOrdered()` в параллельном стриме снижает производительность, поскольку вынуждает потоки синхронизироваться для сохранения порядка.\n\n> **На собеседовании:** главное — объяснить разницу в контексте параллельных стримов. В последовательных стримах поведение идентично.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Для чего в стримах применяются методы forEach и forEachOrder — Gymterview","`forEach()` и `forEachOrdered()` — терминальные операции, которые применяют заданную функцию (`Consumer`) к каждому элементу стрима. Разница проявляется при пар","`forEach()` и `forEachOrdered()` — терминальные операции, которые применяют заданную функцию (`Consumer`) к каждому элем",[15,13],"`forEach()` и `forEachOrdered()` — терминальные операции, которые применяют заданную функцию (`Consumer`) к каждому элементу стрима. Разница проявляется при параллельной обработке.",true]