[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-kak-mezhdu-soboy-svyazany-iterable-iterator-i-for-each":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":18,"progress":19,"seo":20},433,"kak-mezhdu-soboy-svyazany-iterable-iterator-i-for-each",12,"collections","Collections","📚","Как между собой связаны Iterable, Iterator и for-each","Конструкция for-each (enhanced for loop) — это синтаксический сахар, который компилятор преобразует в код с использованием `Iterator`. Любой объект, реализующий интерфейс `Iterable`, может быть использован в for-each.\n\n```java\n\u002F\u002F Что пишет разработчик:\nfor (String s : list) {\n    System.out.println(s);\n}\n\n\u002F\u002F Что генерирует компилятор:\nIterator\u003CString> it = list.iterator();\nwhile (it.hasNext()) {\n    String s = it.next();\n    System.out.println(s);\n}\n```\n\nЦепочка связей: класс реализует `Iterable` -> метод `iterator()` возвращает `Iterator` -> for-each вызывает `iterator()` автоматически. Для массивов for-each работает напрямую через индексный доступ, без Iterator.\n\n> **На собеседовании:** покажите, что for-each — это сахар над Iterator. Упомяните, что массивы тоже поддерживают for-each, но через индексный цикл, а не через Iterable.","","junior",[15,16,17],"основы","interface","jcf",[],null,{"title":21,"description":22,"ogTitle":21,"ogDescription":23,"keywords":24,"schemaAnswer":31,"featuredSnippetReady":32},"Связь Iterable и Iterator в Java — Gymterview","Iterable — интерфейс с методом iterator(), возвращающим Iterator. Iterable — фабрика для Iterator. Каждый вызов iterator() создаёт новый экземпляр итератора.","Iterable — фабрика для Iterator через метод iterator(). Все коллекции JCF реализуют Iterable.",[25,26,27,28,29,30],"Iterable","Iterator","iterator()","for-each","Java","собеседование","Iterable — интерфейс с методом iterator(), который возвращает Iterator. Iterable — фабрика для Iterator. Все коллекции JCF реализуют Iterable через Collection. Каждый вызов iterator() создаёт новый независимый экземпляр итератора.",true]