IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Utilité de l'iterator


Sujet :

avec Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut Utilité de l'iterator
    Bonjour la compagnie

    J'aimerai savoir quand est-ce qu'on utilise un iterator ?
    On l'utilise seulement pour parcourir une liste ?


    Merci

  2. #2
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Pour parcourir une Collection de manière générale... Sans avoir à connaitre l'implémentation de ta collection.
    Bref, un outil commun de parcours des éléments d'une Collection (List, ArrayList, Set, Queue, etc...)

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un Iterator sert à itérer. Tous ce qui est Iterable (implémente Iterable, et les tableaux, cas particulier sur lequel on peut faire un foreach) fournit un Iterator. Les classes qui implémentent List sont Iterable, mais c'est un cas parmi d'autres.

    On peut tout à fait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class IntIterator implements Iterator<Integer>, Iterable<Integer> {
     
        private final int start;
        private final int end;
        private int current;
     
        public IntIterator(int start, int end) {
             this.start=start;
             this.end=end;
             this.current=start;
        }
     
        public Iterator<Integer> iterator() {    
             return new IntIterator(start, end);
        }
     
    	@Override
    	public Integer next() {
    		if ( current<=end ) {
    			return current++;
    		}
    		throw new NoSuchElementException();
    	}
     
    	@Override
    	public boolean hasNext() {
    		return ( current<=end );
    	}
     
    }
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void main(String[] args) {
     
    		for(int value : new IntIterator(10, 20)) {
    			System.out.println(value);
    		}
     
    	}
    qui affiche :

    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    Pas de liste ici.

    on peut même faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    public class FibonacciIterator implements Iterator<Integer>, Iterable<Integer> {
     
    	private final int max;
     
    	private int current;
    	private int value0=0;
    	private int value1=1;
     
    	public FibonacciIterator(int max) {
                    if (max<0) throw new IllegalArgumentException();
    		if ( max>47 ) throw new ArithmeticException("max must be lesser than 48");
    		this.max=max;
    		current = 0;
    	}
     
    	@Override
    	public Iterator<Integer> iterator() {
    		return new FibonacciIterator(max);
    	}
     
    	@Override
    	public boolean hasNext() {
    		return current<max;
    	}
     
    	@Override
    	public Integer next() {
    		if ( current>=max ) throw new NoSuchElementException();
    		final int next;
    		switch( current ) {
    		case 0:
    			next = value0;
    			break;
    		case 1:
    			next = value1;
    			break;
    		default:
    			next = value0 + value1;
    			value0=value1;
    			value1=next;
    		}
    		current++;
    		return next;
    	}
     
    	public static void main(String[] args) {
     
    		for(int i : new FibonacciIterator(47)) {
    			System.out.println(i + " ");
    		}
     
    	}
     
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Iteration VS recursivité
    Par yacinechaouche dans le forum C
    Réponses: 40
    Dernier message: 16/11/2012, 11h52
  2. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  3. utilité du binaire et hexadecimaux?
    Par souris78 dans le forum C
    Réponses: 9
    Dernier message: 01/07/2003, 15h08
  4. [debutant]iterator
    Par Wis dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 05/05/2003, 10h49
  5. vInt::iterator
    Par Monstros Velu dans le forum C++
    Réponses: 19
    Dernier message: 05/04/2003, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo