naq2
Messages postés59Date d'inscriptionsamedi 24 janvier 2004StatutMembreDernière intervention23 décembre 2006
-
14 mai 2004 à 03:07
naq2
Messages postés59Date d'inscriptionsamedi 24 janvier 2004StatutMembreDernière intervention23 décembre 2006
-
14 mai 2004 à 12:13
Bonjour,
Une question simple: J'ai besoin d'écrire un Iterator, comment si prendre? En fait, plutôt, à quoi correspond un Iterator.
Typiquement, j'écris une liste chaînée et j'ai une méthode qui renvoi un Iterator.
A quoi correspond un Iterator? A un tableau qui sauvegarde la liste de mes éléments? Je vois pas trop.
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 14 mai 2004 à 07:37
Salut,
un Iterator est un curseur sur une collection. Il donne l'objet courant et permet de savoir si il y a encore des objets.
L'implémentation est libre mais doit respecter le contrat défini par l'interface Iterator. Pour t'aider regarde les sources sur les implémentation des Iterator.
Ton implémentation peut utiliser un tableau qui contient la copie des éléments ou faire le parcours directement de ta liste (il avance automatiquement à chaque appel de next()) ou autre ...
Un point à faire attention est comment gérer les accès concurrents : par ex tu parcours ta liste avec ton itérateur et un autre thread modifie ta liste. Qu'est ce qui se passe ? Les itérateurs plantent aussitot (comportement fail fast). Là à toi de décider ce que tu veux faire.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 14 mai 2004 à 11:37
:big) Neodante :big)
Je complèterais en disant que l'Iterator est une vraie merveille pour parcourir n'importe quelle Collection (2méthodes -> add(), iterator()) que ce soit des LinkedList ou autre HashTable ... ce qui fait que tu peux prendre les objets depuis n'importe quelle collection et les lire sans connaitre le fonctionnement interne de ta collection ...
@+