Iterator

Iterator - Java - Programmation

Marsh Posté le 04-01-2006 à 19:43:57    

Bonjour tout le monde, j'aimerais mieux comprendre deux choses à propos des iterator.
D'abord, lorsqu'je veux parcourir une linkedlist par exemple,je mets habituellement while (list.hasNext()){...}.
Cependant, je me demandais la différence avec while (list.next() != null) {...}. Pourriez vous me la dire?
Aussi, après reflexion, je me suis demandé la différence entre { les instructions de ma boucle while et ensuite, pour finir, list = list.next(); et {list = list.next(); et ensuite les instructions de ma boucle}. Pour moi, lorsqu'on choisit le deuxième cas, les instructions de la boucle ne sont pas appliquées au premier élément de ma liste...non? Merci.J'attends vos avis!

Reply

Marsh Posté le 04-01-2006 à 19:43:57   

Reply

Marsh Posté le 04-01-2006 à 20:45:48    

sans vouloir te commander, un peu de mise en page dans ta question la rendrai plus lisible et plus compréhensible...

Reply

Marsh Posté le 04-01-2006 à 20:52:14    

Biensur, désolé! Alors...
 
Bonjour tout le monde,
J'aimerais mieux comprendre deux choses à propos des iterator.  
D'abord, lorsque je veux parcourir une linkedlist par exemple,je mets habituellement  
 
Maliste current = liste;
while (current.hasNext()){mes instructions}.
 
Cependant, je me demandais la différence avec
 
Maliste current = liste;
while (current.next() != null) {mes instructions}
 
Aussi, après reflexion, je me suis demandé la différence entre
{ les instructions de ma boucle while et ensuite, pour finir, current= current.next();}
et  
{current= current.next(); et ensuite les instructions de ma boucle}
Je parle donc la de l'ordre de lecture (flow)  de Java 1.4 qui me pose un problème.
Pour moi, lorsqu'on choisit le deuxième cas, les instructions de la boucle ne sont pas appliquées au premier élément de ma liste...non? Merci.J'attends vos avis!Merci

Reply

Marsh Posté le 04-01-2006 à 21:11:57    

flu1 a écrit :

Aussi, après reflexion, je me suis demandé la différence entre
{ les instructions de ma boucle while et ensuite, pour finir, current= current.next();}
et  
{current= current.next(); et ensuite les instructions de ma boucle}
Je parle donc la de l'ordre de lecture (flow)  de Java 1.4 qui me pose un problème.
Pour moi, lorsqu'on choisit le deuxième cas, les instructions de la boucle ne sont pas appliquées au premier élément de ma liste...non? Merci.J'attends vos avis!Merci


 
en effet, tu dois passer par un 1er current.next() pour "activer" le passage, et donc mettre un current.next() juste en début de {instructions while} fait 2 passages successifs, donc le 1er n'est pas traité
d'un autre côté, si tu mets un test current.hasNext(), alors c'est bon...
 
finalement, tu peux faire:
- while (current.hasNext()) {current.next(); blabla}
OU
- while (current.next()!=null) {blabla; current.next();}
 
au choix, mais je trouve la 1ère soluce plus propre


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 04-01-2006 à 21:22:24    

Merci bcp...c'est bien clair comme ca, et on a les memes gouts ;-). Je ne savais pas que la boucle while faisait deux passages successifs, je pensais qu'elle commencait les opérations à la première ligne de code, ce qui faisait donc qu'on passait au deuxième membre de ma liste, et on lui appliquait les instructions...mais si tu dis que la boucle fait deux passages...merci bcp!A bientot.

Reply

Marsh Posté le 04-01-2006 à 21:44:47    

trevor a écrit :

finalement, tu peux faire:
- while (current.hasNext()) {current.next(); blabla}
OU
- while (current.next()!=null) {blabla; current.next();}


 :heink:  
 
next() ca retourne pas nul en fin d'itération, hein, ca balance une NoSuchElementException

Reply

Marsh Posté le 04-01-2006 à 21:57:55    

benou a écrit :

:heink:  
 
next() ca retourne pas nul en fin d'itération, hein, ca balance une NoSuchElementException


 
ah ok. j'avais pas regardé pour les linkedList.
ca m'arrive d'utiliser le .next() pour d'autres trucs (ResultSet par ex)


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 04-01-2006 à 21:58:59    

flu1 a écrit :

Merci bcp...c'est bien clair comme ca, et on a les memes gouts ;-). Je ne savais pas que la boucle while faisait deux passages successifs, je pensais qu'elle commencait les opérations à la première ligne de code, ce qui faisait donc qu'on passait au deuxième membre de ma liste, et on lui appliquait les instructions...mais si tu dis que la boucle fait deux passages...merci bcp!A bientot.


 
je me suis mal exprimé. c'est juste que si tu colles un .next() dans le test, et direct après un .next() dans les instructions de ton while, forcément tu en zappes un (je pense que c'est ce que tu as compris)


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 04-01-2006 à 22:06:18    

trevor a écrit :


- while (current.next()!=null) {blabla; current.next();}
 
au choix


 
euh on traite qu'un element sur deux avec ca la [:pingouino]
 
edit: ah tiens, ce tab etait ouvert depuis plus d'une heure sans que je le voie [:dawa]
desole du up je vais me cacher :o


Message édité par souk le 04-01-2006 à 22:07:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed