[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-chto-takoe-stream":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},361,"chto-takoe-stream",10,"java-8","Java 8+","☕","Что такое Stream?","`Stream` — это абстракция конвейера вычислений над последовательностью элементов. Стрим не хранит данные, а описывает цепочку операций, которые выполняются лениво при вызове терминальной операции. Это ключевое отличие от коллекций: коллекция — структура данных, стрим — конвейер обработки.\n\n> **Аналогия из жизни:** стрим — это конвейерная лента на заводе. Детали (элементы) движутся по ленте и проходят через станции (операции): фильтрацию, обработку, сортировку. Лента не хранит детали — она их перемещает и обрабатывает.\n\n### Ключевые свойства\n\n- Операции бывают промежуточные (intermediate) и конечные (terminal)\n- Промежуточные операции выполняются лениво — до вызова конечной операции ничего не происходит\n- Стрим одноразовый — после терминальной операции использовать повторно нельзя\n- Стрим не модифицирует источник данных\n\n### Примитивные стримы\n\nДля типов `int`, `long` и `double` существуют специализированные стримы: `IntStream`, `LongStream` и `DoubleStream`. Они избегают автобоксинга и предоставляют дополнительные методы: `sum()`, `average()`, `mapToObj()`.\n\n```java\nList\u003CString> names = List.of(\"Alice\", \"Bob\", \"Charlie\");\nnames.stream()\n    .filter(name -> name.length() > 3)\n    .map(String::toUpperCase)\n    .forEach(System.out::println); \u002F\u002F ALICE, CHARLIE\n```\n\n> **На собеседовании:** обязательно упомяните ленивость выполнения (lazy evaluation) и одноразовость стрима. Также важно различать промежуточные и конечные операции — промежуточные возвращают стрим, конечные — результат или void.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое Stream? — Gymterview","`Stream` — это абстракция конвейера вычислений над последовательностью элементов. Стрим не хранит данные, а описывает цепочку операций, которые выполняются лени","`Stream` — это абстракция конвейера вычислений над последовательностью элементов. Стрим не хранит данные, а описывает це",[15,13],"`Stream` — это абстракция конвейера вычислений над последовательностью элементов. Стрим не хранит данные, а описывает цепочку операций, которые выполняются лениво при вызове терминальной операции. Это ключевое отличие от коллекций: коллекция — структура данных, стрим — конвейер обработки.",true]