anipassion.com

[LGJ1] Iterator

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LGJ1] Iterator

Message  Bill le Dim 05 Sep 2010, 12:54

Bonjour

Voilà, je suis sur le mot-clé iterator, mais j'ai un peu (voir beaucoup) de mal avec, car je ne vois pas quand je dois l'utiliser, et donc, je ne vois pas trop son utilité...
Donc si quelqu'un peut m'aiguiller, ce serait génial, merci d'avance.

Bill

Nombre de messages : 73
Age : 27
Prénom : Kevin
Statut : Ancien
Localisation : Brussels
Date d'inscription : 07/10/2009

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  mcd le Dim 05 Sep 2010, 13:01

L'itérateur est lié au "foreach".
On peut faire un "foreach" sur une List. Pourquoi ? Parce qu'elle propose un itérateur.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  Wark le Dim 05 Sep 2010, 14:06

Un itérateur permet de parcourir une collection dont tu ne connais pas la taille (enfin, c'est pour moi le principal avantage)

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  mba le Dim 05 Sep 2010, 14:44

Oui, les Collection sont des Iterable, mais ce ne sont pas les seules classes ayant une telle caractéristique :

un exercice qui peut aider à comprendre ce concept est de construire sa propre classe Iterable.

par exemple une classe Main (oui oui, la main avec ses doigts :-) )
Elle contient 5 doigts et on voudrait pouvoir écrire un code du genre

Code:
for (Doigt doigt : maMain) {... /* non pas ça */ ...}

ça va ?

Pour faire cela ta classe Main doit implémenter l'interface Iterable et donc fournir une méthode iterator () qui renvoye ton objet Iterator (*).
Très bien très bien mais c'est quoi ça ?

Eh bien c'est toi qui va le créer donc cet Iterator et c'est une classe que tu nommeras par exemple MainIterator, elle implémente Iterator et permet de parcourir les doigts d'une main. Elle doit connaître le doigt courant et pouvoir fournir le suivant etc tout ça par les méthodes de classe next () ,hasNext() ...

bon voilà une piste ...

(*)Note que minuscules et majuscules ont de l'importance ici. Ne confonds pas les noms de classe et de méthode fort semblables.

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  pbt le Dim 05 Sep 2010, 18:16

Wark a écrit:Un itérateur permet de parcourir une collection dont tu ne connais pas la taille (enfin, c'est pour moi le principal avantage)

Ce n'est pas parce que tu ne cite pas la taille que tu ne la connais pas.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  Wark le Dim 05 Sep 2010, 21:05

Toujours est-il qu'elle est inintéressante dans ce cas. Ca n'est pas une vérité générale mais simplement l'utilisation principale. Smile

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  mcd le Dim 05 Sep 2010, 22:41

Non !
Les principaux intérêts sont :
- une écriture plus compacte et plus lisible à l'utilisation : on voit clairement qu'on parcourt les éléments
- une écriture plus portable : même code quelle que soit la méthode qui permet d'avoir l'élément 'i'
- un code optimisé. Puisqu'on dit qu'on parcours la liste, l'itérateur peut fournir un code plus rapide pour ça. Difficile de s'en convaincre en 1er mais plus évident qu'on vous verrez en 2ème comment fonctionne une LinkedList.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [LGJ1] Iterator

Message  Contenu sponsorisé Aujourd'hui à 20:42


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum