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

Он называется «троичным» или «условным» оператором.

Пример

Оператор?: Можно использовать как ярлык для оператора if ... else. Обычно он используется как часть более крупного выражения, где оператор if ... else будет неудобным. Например:

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

В примере создается строка, содержащая «Добрый вечер». если это после 6 вечера. Эквивалентный код с использованием оператора if ... else будет выглядеть следующим образом:

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

Из документации MSDN JS .

По сути это условное заявление.

Также см .:

36
задан Michael Myers 29 June 2009 в 16:30
поделиться

5 ответов

Besides what Jeremy said, its main benefit is that it has its own bit of syntactic sugar: the enhanced for-loop. If you have, say, an Iterable, you can do:

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

Nice and easy, isn't it? All the dirty work of creating the Iterator, checking if it hasNext(), and calling str = getNext() is handled behind the scenes by the compiler.

And since most collections either implement Iterable or have a view that returns one (such as Map's keySet() or values()), this makes working with collections much easier.

The Iterable Javadoc gives a full list of classes that implement Iterable.

45
ответ дан 27 November 2019 в 05:47
поделиться

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

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

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

13
ответ дан 27 November 2019 в 05:47
поделиться

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

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

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

5
ответ дан 27 November 2019 в 05:47
поделиться

An interface is at its heart a list of methods that a class should implement. The iterable interface is very simple -- there is only one method to implement: Iterator(). When a class implements the Iterable interface, it is telling other classes that you can get an Iterator object to use to iterate over (i.e., traverse) the data in the object.

4
ответ дан 27 November 2019 в 05:47
поделиться

Iterators basically allow for iteration over any Collection.

It's also what is required to use Java's for-each control statement.

3
ответ дан 27 November 2019 в 05:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: