Question

Je suis un débutant et je ne peux pas comprendre l'effet réel de l'interface Iterable.

Était-ce utile?

La solution

En plus de ce que Jeremy a dit, son principal avantage est qu'il a son propre peu de sucre syntaxique: amélioré pour boucle . Si vous avez, disons, un Iterable<String>, vous pouvez le faire:

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

Nice et facile, non? Tout le travail sale de la création du Iterator<String>, vérifier si elle hasNext() et appelant est géré derrière str = getNext() les coulisses par le compilateur.

Et puisque la plupart des collections, soit mettre en œuvre une ou Iterable vue qui retourne un (comme ou Map keySet() de values()), ce qui rend le travail avec des collections beaucoup plus facile.

Le Javadoc donne <=> une liste complète des classes qui implémentent <=>.

Autres conseils

Si vous avez un ensemble de données complexes, comme un arbre ou une file d'attente hélicoïdale (oui, je viens de faire que vers le haut), mais vous ne se soucient pas comment il est structuré en interne, vous voulez juste obtenir tous les éléments un par un, vous obtenez pour retourner un itérateur.

L'objet complexe en question, que ce soit un arbre ou une file d'attente ou d'un WombleBasket implémente itératives, et peut renvoyer un objet iterator que vous pouvez interroger à l'aide des méthodes Iterator.

De cette façon, vous pouvez simplement demander si elle hasNext(), et si elle le fait, vous obtenez le point next(), sans se soucier où obtenir de l'arbre ou ailleurs.

Il retourne un java.util.Iterator. Il est principalement utilisé pour être en mesure d'utiliser le type dans la mise en œuvre améliorée boucle

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

Sous le capot le compilateur appelle le et itère il list.iterator() en vous donnant la à l'intérieur de la i boucle.

Une interface est en son cœur une liste des méthodes qu'une classe doit mettre en œuvre. L'interface itérables est très simple - il n'y a qu'une seule méthode pour mettre en œuvre: Iterator(). Lorsqu'une classe implémente l'interface Iterable, il est dit d'autres classes que vous pouvez obtenir un objet à utiliser pour Iterator itérer (à savoir, traverse) les données de l'objet.

itérateurs permettent essentiellement d'itération sur une collection.

Il est aussi ce qui est nécessaire pour utiliser Java est pour chaque-instruction de contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top