255 votes

Quelle est la difference entre iterator et iterable et comment les utiliser?

Je suis nouveau en Java et je suis vraiment confus avec iterator et iterable. Quelqu'un peut-il m'expliquer et me donner des exemples?

270voto

ColinD Points 48573

Un Iterable est une représentation simple d'une série d'éléments que l'on peut parcourir. Il n'a pas d'itération de l'état comme un "élément courant". Au lieu de cela, il a une méthode qui produit un Iterator.

Un Iterator est l'objet à l'itération de l'état. Il vous permet de vérifier si il a plus d'éléments à l'aide de hasNext() et passer à l'élément suivant (le cas échéant) à l'aide d' next().

En règle générale, un Iterable devrait être en mesure de produire un nombre de validité Iterators.

101voto

Kazark Points 2453

Une implémentation de Iterable est une implémentation qui fournit un Iterator :

 public interface Iterable<T>
{
    Iterator<T> iterator();
}
 

Un itérateur est un moyen simple d’autoriser certaines personnes à parcourir une collection de données sans privilèges d’attribution (bien qu’il soit possible de les supprimer).

 public interface Iterator<E>
{
    boolean hasNext();
    E next();
    void remove();
}
 

Voir Javadoc.

16voto

dlev Points 28160

Si une collection est itérable, elle peut être itérée à l'aide d'un itérateur (et peut donc être utilisée dans une boucle pour chaque boucle). L'itérateur est l'objet réel qui itérera dans la collection.

9voto

Surendhar Points 888

L'implémentation de l'interface Iterable permet à un objet d'être la cible de l'instruction "foreach".

 class SomeClass implements Iterable<String> {}

class Main 
{
  public void method()
  {
     SomeClass someClass = new SomeClass();
     .....

    for(String s : someClass) {
     //do something
    }
  }
}
 

Iterator est une interface qui a une implémentation pour itérer sur des éléments. Iterable est une interface qui fournit Iterator.

9voto

Praveen Kishor Points 16

La considération la plus importante est de savoir si l’élément en question doit pouvoir être parcouru plus d’une fois. En effet, vous pouvez toujours rembobiner un Iterable en appelant à nouveau iterator (), mais il n’ya aucun moyen de rembobiner un Iterator.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X