[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-kakie-sushchestvuyut-sposoby-sozdaniya-strima":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},362,"kakie-sushchestvuyut-sposoby-sozdaniya-strima",10,"java-8","Java 8+","☕","Какие существуют способы создания стрима?","Стримы можно создать из множества источников данных. Ниже перечислены восемь основных способов.\n\n| Способ | Пример |\n|--------|--------|\n| Из коллекции | `list.stream()` |\n| Из набора значений | `Stream.of(\"x\", \"y\", \"z\")` |\n| Из массива | `Arrays.stream(array)` |\n| Из файла | `Files.lines(Paths.get(\"input.txt\"))` |\n| Из строки | `\"abc\".chars()` |\n| Через Builder | `Stream.builder().add(\"a\").add(\"b\").build()` |\n| Через iterate (бесконечный) | `Stream.iterate(1, n -> n + 1)` |\n| Через generate (бесконечный) | `Stream.generate(Math::random)` |\n\n\u003Cdetails>\n\u003Csummary>Примеры кода для каждого способа\u003C\u002Fsummary>\n\n```java\n\u002F\u002F 1. Из коллекции\nStream\u003CString> fromCollection = Arrays.asList(\"x\", \"y\", \"z\").stream();\n\n\u002F\u002F 2. Из набора значений\nStream\u003CString> fromValues = Stream.of(\"x\", \"y\", \"z\");\n\n\u002F\u002F 3. Из массива\nStream\u003CString> fromArray = Arrays.stream(new String[]{\"x\", \"y\", \"z\"});\n\n\u002F\u002F 4. Из файла (каждая строка — элемент)\nStream\u003CString> fromFile = Files.lines(Paths.get(\"input.txt\"));\n\n\u002F\u002F 5. Из строки\nIntStream fromString = \"0123456789\".chars();\n\n\u002F\u002F 6. С помощью Stream.builder()\nStream\u003CString> fromBuilder = Stream.builder().add(\"z\").add(\"y\").add(\"z\").build();\n\n\u002F\u002F 7. С помощью Stream.iterate() (бесконечный)\nStream\u003CInteger> fromIterate = Stream.iterate(1, n -> n + 1);\n\n\u002F\u002F 8. С помощью Stream.generate() (бесконечный)\nStream\u003CString> fromGenerate = Stream.generate(() -> \"0\");\n```\n\n\u003C\u002Fdetails>\n\nБесконечные стримы (`iterate` и `generate`) требуют ограничения через `limit()`, иначе конечная операция не завершится. Начиная с Java 9, метод `iterate` получил перегрузку с предикатом: `Stream.iterate(0, n -> n \u003C 10, n -> n + 1)`.\n\n> **На собеседовании:** назовите хотя бы 4-5 способов и упомяните, что `iterate`\u002F`generate` создают бесконечные стримы. Также стоит знать, что стрим из файла (`Files.lines`) нужно закрывать (реализует `AutoCloseable`).","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":20,"keywords":21,"schemaAnswer":20,"featuredSnippetReady":22},"Какие существуют способы создания стрима? — Gymterview","Стримы можно создать из множества источников данных. Ниже перечислены восемь основных способов.",[15,13],true]