В чем разница между итератором и итерируемым и как их использовать? - PullRequest
167 голосов
/ 28 июля 2011

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

Ответы [ 12 ]

0 голосов
/ 31 мая 2017

В дополнение к ColinD и Искатель ответов.

Проще говоря, Итерируемый и Итератор оба являются интерфейсами, предоставляемыми в Java Collection Framework.

Iterable

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

iterableElements.forEach (x -> System.out.println(x) );

Итератор

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

for (Iterator i = c.iterator(); i.hasNext(); ) {
       Element e = i.next();    //Get the element
       System.out.println(e);    //access or modify the element
}

Источники:

  1. Java Doc Iterable
  2. Java Doc Iterator
0 голосов
/ 28 апреля 2017

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

повторяемость: относится к циклу forEach
итератор: связан с коллекцией

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

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

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

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

...