Подтвердить что ты не робот

Для чего используется интерфейс Iterable?

Я начинаю, и я не могу понять реальный эффект интерфейса Iterable.

4b9b3361

Ответ 1

Кроме того, что сказал Джереми, его основное преимущество в том, что у него есть свой собственный бит синтаксического сахара: улучшенный для цикла. Если у вас есть, скажем, Iterable<String>, вы можете сделать:

for (String str : myIterable) {
    ...
}

Приятно и легко, не так ли? Вся грязная работа по созданию Iterator<String>, проверка, если она hasNext(), и вызов str = getNext() обрабатывается компилятором за кулисами.

И поскольку большинство коллекций либо реализуют Iterable, либо имеют представление, которое возвращает один (например, Map keySet() или values()), это облегчает работу с коллекциями.

Iterable Javadoc дает полный список классов, которые реализуют Iterable.

Ответ 2

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

Сложный объект, о котором идет речь, будь то дерево или очередь или WombleBasket реализует Iterable и может возвращать объект итератора, который вы можете запросить, используя методы Iterator.

Таким образом, вы можете просто спросить его, если он hasNext(), и если это произойдет, вы получите элемент next(), не беспокоясь, где его получить из дерева или где угодно.

Ответ 3

Он возвращает java.util.Iterator. В основном он используется, чтобы иметь возможность использовать тип реализации в расширенном для цикла

List<Item> list = ...
for (Item i:list) {
 // use i
}

Под капотом компилятор вызывает list.iterator() и выполняет итерацию, предоставляя вам i внутри цикла for.

Ответ 4

Итераторы в основном допускают итерацию по любой коллекции.

Это также то, что требуется для использования инструкции Java для каждого элемента управления.

Ответ 5

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