Iterator - Java - Programmation
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...
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
Marsh Posté le 04-01-2006 à 21:11:57
flu1 a écrit : Aussi, après reflexion, je me suis demandé la différence entre |
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
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.
Marsh Posté le 04-01-2006 à 21:44:47
trevor a écrit : finalement, tu peux faire: |
next() ca retourne pas nul en fin d'itération, hein, ca balance une NoSuchElementException
Marsh Posté le 04-01-2006 à 21:57:55
benou a écrit : |
ah ok. j'avais pas regardé pour les linkedList.
ca m'arrive d'utiliser le .next() pour d'autres trucs (ResultSet par ex)
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)
Marsh Posté le 04-01-2006 à 22:06:18
trevor a écrit : |
euh on traite qu'un element sur deux avec ca la
edit: ah tiens, ce tab etait ouvert depuis plus d'une heure sans que je le voie
desole du up je vais me cacher
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!