Как использовать цикл For-Each в моей коллекции? - PullRequest
0 голосов
/ 26 февраля 2011

У меня есть класс Network, в нем NET = ArrayList<Node>. Я использую класс Network для управления тем, что можно и что нельзя добавлять, поддерживая сортировку ArrayList и т. Д. У меня есть метод get, который принимает номер узла в качестве аргумента, который использует двоичный поиск по ArrayList (они отсортированы согласно этому номеру)

Но в большинстве случаев, когда другие объекты должны вызывать узел, им просто нужно пройти через узлы независимо от их номеров и часто вообще не знать номер.

В Network у меня

public Iterator<Node> iterator() {
        return NET.iterator();
}

И такие вещи, как

Iterator<Node> i = net.iterator();
Node n;
while (i.hasNext()) {
    n = i.next();
    // do stuff
}

Но для

for (Node n : net) {

}

Я получаю "foreach, не применимый к типу выражения". Что еще мне нужно добавить в сеть, чтобы использовать цикл for-each, если это возможно?

Мои исследования привели меня только к темам, объясняющим, зачем мне нужен для каждого, и я думаю, что это актуально в этом случае.

1 Ответ

8 голосов
/ 26 февраля 2011

Вам необходимо реализовать интерфейс Iterable<T>, чтобы foreach использовал ваш итератор.

...