в чем разница между iterable и iterator java

Русские Блоги

Разница между Iterator и Iterable в Java

И Iterator, и Iterable являются интерфейсами. Чтобы

Многие классы коллекций, такие как семейство List или семейство Set, реализуют интерфейс Iterable, чтобы объект мог вызывать метод iterator (). Чтобы

Как правило, он используется в комбинации. Например, класс HashMap реализует интерфейс Iterable. Если вы хотите получить доступ или распечатать все содержимое карты, вы можете сделать это:

Итак, в чем разница между Iterator и Iterable? В Iterable есть метод iterator (), который может генерировать интерфейс типа Iterator. Почему вы хотите сделать это вместо того, чтобы позволить классу коллекции напрямую реализовывать интерфейс итератора?

JavaSE5 представляет новый интерфейс Iterable, который содержит метод iterator (), который может генерировать интерфейс Iterator, а объект Iterable используется функцией foreach в последовательностиChina Mobile, Таким образом, любой созданный класс, реализующий интерфейс Iterable, может использовать его для foreach.
Пример 1. При наследовании Iterable и переопределении метода итератора может быть получен только один тип итератора.

Пример 2. Теперь существует класс Iterable. Вы хотите добавить один или несколько методов использования этого класса в оператор foreach. Например, вы хотите выполнить итерацию вперед, назад и случайным образом по списку слов. Как ее решить (поскольку при наследовании Iterable и переопределении метода итератора может быть реализован только один тип прямого или обратного итератора, как в Примере 1)?
адаптерметод: Добавить в класс методы «прямой итератор», «обратный итератор» и «случайный итератор», которые могут генерировать объекты Iteratble, чтобы сгенерированные объекты можно было использовать в операторах foreach.

Все классы Collection в Java (кроме различных карт) являются Iterable-типами. Map может использовать методы entrySet () и values ​​() для генерации Colletion, так что Map можно применять к forech. Пример карты с использованием foreach:

Источник

В чем разница между итератором и итерируемым и как их использовать?

Я новичок в Java, и я действительно запутался с итератором и повторяем. Может кто-нибудь объяснить мне и привести несколько примеров?

Как правило, Iterable должно быть в состоянии произвести любое количество действительных Iterator s.

Реализация интерфейса Iterable позволяет объекту быть целью оператора foreach.

Наиболее важным соображением является то, должен ли рассматриваемый элемент быть в состоянии пройти более одного раза. Это потому, что вы всегда можете перемотать Iterable с помощью повторного вызова iterator (), но нет способа перемотать Iterator.

Рассмотрим пример с 10 яблоками. Когда он реализует Iterable, это все равно что складывать каждое яблоко в ячейки от 1 до 10 и возвращать итератор, который можно использовать для навигации.

Реализуя итератор, мы можем получить любое яблоко, яблоко в следующих коробках и т. Д.

Таким образом, реализация iterable дает итератору для навигации по его элементам, хотя для навигации необходимо реализовать итератор.

Вопрос: Разница между Iterable и Iterator?
Ans:

iterable: связан с
итератором цикла forEach : is связан с Collection

Целевой элемент цикла forEach должен быть итеративным.
Мы можем использовать Iterator, чтобы получить объект один за другим из коллекции.

Итеративный подарок в пакете java.ḷang
Итератор, присутствующий в пакете java.util

Содержит только один метод iterator ()
Содержит три метода hasNext (), next (), remove ()

Представлено в версии 1.5
Представлено в версии 1.2

По сути, оба они очень тесно связаны друг с другом.

Считайте Iterator интерфейсом, который помогает нам обходить коллекцию с помощью некоторых неопределенных методов, таких как hasNext (), next () и remove ().

С другой стороны, Iterable является еще одним интерфейсом, который, если он реализован классом, заставляет класс быть Iterable и является целью для конструкции For-Each. У него есть только один метод с именем iterator (), который происходит из самого интерфейса Iterator.

Когда коллекция является итеративной, ее можно повторять с помощью итератора.

Для понимания посетите эти:

Я знаю, что это старый вопрос, но для любого, кто читает этот вопрос, кто застрял в одном и том же вопросе и может быть перегружен всей терминологией, вот хорошая, простая аналогия, которая поможет вам понять это различие между итераторами и итераторами:

Подумайте о публичной библиотеке. Старая школа. С бумажными книгами. Да, такая библиотека.

Полка с книгами была бы как бы повторяемой. Вы можете увидеть длинную очередь книг на полке. Вы можете не знать, сколько, но вы можете видеть, что это длинная коллекция книг.

Библиотекарь будет как итератор. Он может указать на конкретную книгу в любой момент времени. Он может вставить / удалить / изменить / прочитать книгу в том месте, куда он указывает. Он последовательно указывает на каждую книгу каждый раз, когда вы кричите «следующий!» Для него. Итак, вы обычно спрашиваете его: «Имеет следующий?», И он отвечает «да», на что вы говорите «следующий»! и он укажет на следующую книгу. Он также знает, когда он достиг конца полки, так что, когда вы спрашиваете: «Есть следующий?» он скажет «нет».

Я знаю, что это немного глупо, но я надеюсь, что это поможет.

В дополнение к ColinD и Seeker ответы.

Iterable

Итератор

Источник

В чем разница между iterator и iterable и как их использовать?

Я новичок в Java, и я действительно запутался с iterator и iterable. Может кто-нибудь объяснить мне и привести несколько примеров?

12 ответов

как правило, Iterable должен быть в состоянии произвести любое количество действующих Iterator s.

итератор-это простой способ позволить некоторым перебирать коллекцию данных без привилегий назначения (хотя и с возможностью удаления).

Iterable: интерфейс, который может быть повторен. То есть тот, у которого есть идея: «дайте мне первое, теперь следующее И так далее, пока мы не закончим.»

итератор : интерфейс, который управляет итерацией по iterable. То есть, он отслеживает, где мы находимся в текущей итерации, и знает, что следующий элемент и как его получить.

сделать итерируемый объект, он должен испускать

Если коллекция является итерируемым, то он может быть итерированы с помощью итератора (и, следовательно, может быть использован в каждом цикле.) Итератор-это фактический объект, который будет выполнять итерацию по коллекции.

реализация интерфейса Iterable позволяет объекту быть целью оператора «foreach».

Iterator-это интерфейс, который имеет реализацию для итерации по элементам. Iterable-это интерфейс, который предоставляет Iterator.

наиболее важным соображением является то, должен ли данный пункт быть пройден более одного раза. Это связано с тем, что вы всегда можете перемотать итерацию, снова вызвав iterator (), но нет способа перемотать итератор.

Я отвечу на вопрос, особенно об ArrayList в качестве примера, чтобы помочь вам лучше понять..

. И Iterable, Collection и List просто объявляют абстрактный метод ‘ iterator ()’ и ArrayList самостоятельно реализует его.

в принципе, оба они очень тесно связаны друг с другом.

считают итератор быть интерфейсом, который помогает нам в прохождении через коллекцию с помощью некоторых неопределенных методов, таких как hasNext (), next () и remove ()

на оборотной стороне,типа Iterable еще один интерфейс, который, если реализуется классовых сил в классе Iterable и является мишенью для каждой конструкции. Он имеет только один метод с именем iterator (), который происходит от самого интерфейса итератора.

когда коллекция является итерируемым, то он может быть итерированы с помощью итератора.

для понимания посетите эти:

Рассмотрим пример с 10 яблоками. Когда он реализует Iterable, это похоже на размещение каждого apple в ящиках от 1 до 10 и возврат итератора, который можно использовать для навигации.

реализуя итератор, мы можем получить любое яблоко, Яблоко в следующих коробках и т. д.

Как пояснил здесь,»типа Iterable» была введена, чтобы иметь возможность использовать в foreach петли. Класс, реализующий типа Iterable интерфейс может быть повторен.

Iterator-это класс, который управляет итерацией над типа Iterable. Он поддерживает состояние, в котором мы находимся в текущей итерации, и знает, что такое следующий элемент и как его получить.

вопрос: разница между Iterable и Iterator?
Ans:

iterable: это связано с циклом forEach
iterator: Is связан с коллекцией

целевой элемент цикла forEach должен быть итерабельным.
Мы можем использовать итератор, чтобы получить объект один за другим из коллекции

Iterable присутствует в java.ḷang пакет
Итератор присутствует в java.пакет утиль

содержит только один метод итератора()
Содержит три метода hasNext(), next (), remove ()

представлен в версии 1.5
Представлен в версии 1.2

кроме ColinD и Искатель ответы.

в простых терминах, типа Iterable и итератор оба интерфейса предоставляются в рамках коллекции Java.

типа Iterable

класс должен реализовывать интерфейс Iterable, если он хочет иметь для каждого цикл для итерации по коллекции. Однако,для каждого цикла может использоваться только для цикла по коллекции в прямом направлении, и вы не сможете изменить элементы в этой коллекции. Но, если все, что вы хотите, это прочитать данные элементов, то это очень просто, и благодаря Java Lambda expression это часто один лайнер. Например:

итератор

этот интерфейс позволяет перебирать коллекцию, получать и удалять ее элементы. Каждый из классов коллекции предоставляет а iterator () метод, который возвращает итератор в начало коллекции. Преимущество этого интерфейса над iterable заключается в том, что с этим интерфейсом вы можете добавлять, изменять или удалять элементы в коллекции. Но для доступа к элементам требуется немного больше кода, чем iterable. Например:

Источник

Зачем в Java 2 интерфейса: Iterable и Iterator?

По-моему они только вносят путаницу. Я так понял их роли: Iterable говорит что по объектам класса в принципе можно итерироваться, а Iterator задает сами методы для итерирования. Но по-моему все это отлично смотрелось бы в одном интерфейсе. Который и объявлял бы класс итерируемым и одновременно задавал бы методы для итерирования.

в чем разница между iterable и iterator java. Смотреть фото в чем разница между iterable и iterator java. Смотреть картинку в чем разница между iterable и iterator java. Картинка про в чем разница между iterable и iterator java. Фото в чем разница между iterable и iterator java

3 ответа 3

Можно было бы об этом задуматься, если предполагаемое соответствие Iterable и его Iterator было «один к одному». Но дело обстоит иначе: Iterable может в некий момент обходиться несколькими Iterator сразу (возможно, ещё и в разных thread’ах!). То есть, это интерфейсы, представляющие две разных сущности: коллекцию и обход коллекции.

Уже поэтому стоит их разделить, поскольку в противном случае для нескольких параллельных обходов коллекция должна быть всегда завёрнута в итератор и иметь два вида копирования (для итератора и для коллекции), а тут уже просматривается явное нарушение SRP (Single Responsibility Principle, принципа единственной обязанности).

Первый не возможен без Второго. Второй возможен без первого, но бесполезен.

в чем разница между iterable и iterator java. Смотреть фото в чем разница между iterable и iterator java. Смотреть картинку в чем разница между iterable и iterator java. Картинка про в чем разница между iterable и iterator java. Фото в чем разница между iterable и iterator java

. все это отлично смотрелось бы в одном интерфейсе

Iterator — это интерфейс. То есть мы можем вызвать метод какого-то класса, передать ему итератор и как бы сказать: «вот тебе некая последовательность, пробегись-ка по ней и сделай ряд действий».

Благодаря абстрактности итератор может быть вообще не привязан ни к какой коллекции, а самостоятельно генерировать значения на лету!

Причём эти действия, связанные с последовательным проходом по элементам, одинаковы для любого типа контейнера.

Но даже если считать, что любой итератор завязан на своём контейнере, то всё равно получается нехорошо. Итератор — это вспомогательная сущность, состояние которой надо хранить. Плюс, как правильно заметил @D-side, итератор даже уровне восприятия является отдельной сущностью.

Источник

В чем разница между iterator и iterable и как их использовать?

Я новичок в Java, и я действительно путаю с iterator и iterable. Может кто-нибудь объяснить мне и привести несколько примеров?

12 ответов:

как правило, an Iterable должен быть в состоянии произвести любое количество действующих Iterator s.

реализация Iterable это тот, который обеспечивает Iterator о себе:

итератор-это простой способ разрешить некоторым из них перебирать коллекцию данных без привилегий назначения (хотя и с возможностью удаления).

Iterable: интерфейс, который может быть повторен. То есть тот, у которого есть понятие «достань мне первое, теперь следующее И так далее, пока мы не закончим.»

итератор : интерфейс, который управляет итерацией над iterable. То есть, он отслеживает, где мы находимся в текущей итерации, и знает, что следующий элемент и как его получить.

чтобы сделать объект итерационным, он должен излучать

Если коллекция является итерационной, то она может быть повторена с помощью итератора (и, следовательно, может использоваться в каждом цикле.) Итератор-это фактический объект, который будет проходить через коллекцию.

реализация итерационного интерфейса позволяет объекту быть целью оператора «foreach».

итератор-это интерфейс, который имеет реализацию для итерации по элементам. Iterable-это интерфейс, который предоставляет итератор.

наиболее важным соображением является то, должен ли данный элемент быть пройден более одного раза. Это связано с тем, что вы всегда можете перемотать итерацию, снова вызвав iterator (), но нет способа перемотать итератор.

Я отвечу на вопрос, особенно о ArrayList в качестве примера, чтобы помочь вам лучше понять..

. И Iterable, коллекция и список просто объявляют абстрактный метод ‘iterator ()’ и ArrayList только реализует его.

‘iterator()’ метод возвращает объект ИТР класс’, который реализует ‘итератор’.

в сущности говоря, обе они очень тесно связаны друг с другом.

рассмотрим итератор быть интерфейсом, который помогает нам в прохождении через коллекцию с помощью некоторых неопределенных методов, таких как hasNext (), next () и remove ()

когда коллекция является итерационной, то она может быть повторена с помощью итератора.

для понимания посетите эти:

Рассмотрим пример с 10 яблоками. Когда он реализует Iterable, это похоже на то, чтобы поместить каждое яблоко в коробки от 1 до 10 и вернуть итератор, который можно использовать для навигации.

путем снабжать итератор, мы можем получить любое яблоко, Яблоко в следующих коробках ЕТК.

Как пояснил здесь,» Iterable» была введена, чтобы иметь возможность использовать в foreach петли. Класс, реализующий Iterable интерфейс может быть повторен.

итератор-это класс, который управляет итерации над Iterable. Он поддерживает состояние, в котором мы находимся в текущей итерации, и знает, что такое следующий элемент и как его получить.

вопрос: разница между Iterable и Iterator?
Ответ:

iterable: это связано с циклом forEach
итератор: это имеет отношение к коллекции

целевой элемент цикла forEach должен быть итерационным.
Мы можем использовать итератор, чтобы получить объект один за другим из коллекции

Iterable присутствует в java.ḷang пакет
Итератор присутствует в java.util package

содержит только один метод итератора()
Содержит три метода hasNext(), next (), remove ()

введено в версии 1.5
Введено в версии 1.2

проще говоря, Iterable и итератор оба интерфейса предоставляются в рамках коллекции Java.

Iterable

класс должен реализовывать интерфейс Iterable, если он хочет иметь для каждого цикл для итерации по коллекции. Однако,для каждого цикла могут быть использованы только для перебора коллекции в прямом направлении, и вы не сможете изменить элементы в этой коллекции. Но, если все, что вы хотите, это прочитать данные элементов, то это очень просто, и благодаря лямбда-выражению Java это часто один лайнер. Например:

итератор

этот интерфейс позволяет выполнять итерации по коллекции, получая и удаляя ее элементы. Каждый из классов коллекции предоставляет а iterator () метод, который возвращает итератор в начало коллекции. Преимущество этого интерфейса над iterable заключается в том, что с этим интерфейсом вы можете добавлять, изменять или удалять элементы в коллекции. Но для доступа к элементам требуется немного больше кода, чем iterable. Например:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *