À quoi sert l'interface itérable?
Je suis un débutant et je ne peux pas comprendre l'effet réel de l'interface Iterable
.
5 réponses
Outre ce que Jeremy a dit, son principal avantage est qu'il a son propre peu de sucre syntaxique: le amélioré for-loop. Si vous avez, disons, un Iterable<String>
, vous pouvez faire:
for (String str : myIterable) {
...
}
Agréable et facile, n'est-ce pas? Tout le sale boulot de créer le Iterator<String>
, de vérifier s'il hasNext()
et d'appeler str = getNext()
est géré dans les coulisses par le compilateur.
Et puisque la plupart des collections implémentent Iterable
ou ont une vue qui en renvoie une (telle que Map
keySet()
ou values()
), cela rend le travail avec collections beaucoup plus facile.
Le Iterable
Javadoc donne une liste complète des classes qui implémentent Iterable
.
Si vous avez un ensemble de données compliqué, comme un arbre ou une file d'attente hélicoïdale (Oui, je viens de l'inventer), mais vous Ne vous souciez pas de comment il est structuré en interne, vous voulez juste obtenir tous les éléments un par un, vous l'obtenez pour retourner un itérateur.
L'objet complexe en question, qu'il s'agisse d'une arborescence, d'une file d'attente ou D'un WombleBasket, implémente Iterable et peut renvoyer un objet iterator que vous pouvez interroger à l'aide des méthodes Iterator.
De Cette façon, vous pouvez simplement lui demander si il hasNext()
, et si il est-ce que, vous obtenez l'élément next()
, sans vous soucier de l'endroit où l'obtenir de l'arbre ou où.
, Il renvoie un java.util.Iterator
. Il est principalement utilisé pour pouvoir utiliser le type d'implémentation dans la boucle for améliorée
List<Item> list = ...
for (Item i:list) {
// use i
}
Sous le capot, le compilateur appelle le list.iterator()
et l'itère en vous donnant le i
à l'intérieur de la boucle for.
Une interface est au cœur d'une liste de méthodes qu'une classe doit implémenter. L'interface itérable est très simple - il n'y a qu'une seule méthode à implémenter: Iterator()
. Lorsqu'une classe implémente l'interface Iterable
, elle indique aux autres classes que vous pouvez obtenir un objet Iterator
à utiliser pour parcourir (c'est-à-dire traverser) les données de l'objet.
Les itérateurs permettent essentiellement l'itération sur n'importe quelle Collection.
C'est aussi ce qui est nécessaire pour utiliser L'instruction de contrôle For-each de Java.