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

Collection et Stream Java Discussion :

Parcour de TreeMap


Sujet :

Collection et Stream Java

  1. #1
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut Parcour de TreeMap
    Bonjour je suis en train de faire des test avec les collection JAVA voici le code que j'essai d'executer :

    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
     
    import java.util.*;
     
     
    public class ToTest {
     
     
    	public ToTest() {
     
    	}
     
    	public void go() {
    		TreeSet <String> ts = new TreeSet <String> ();
    		ts.add("key1");
    		ts.add("key4");
    		ts.add("key2");
    		ts.add("key8");
    		ts.add("key5");
     
    		for (String entree : ts) {
    			System.out.println(entree);
    		}
     
    		TreeMap <String, String> MaMap = new TreeMap <String, String> ();
    		MaMap.put("key1","coucou1");
    		MaMap.put("key4","coucou4");
    		MaMap.put("key2","coucou2");
    		MaMap.put("key8","coucou8");
    		MaMap.put("key5","coucou5");
     
    		for (Map.Entry entree : MaMap) {
    			System.out.println("Clé : "+entree.getKey()+" Valeur : "+entree.getValue());
    		}
     
     
     
    	}
     
     
     
     
    }
    Qqun peut il me dire pourquoi le parcour de la treeMap ne compile pas j'ai une erreur : Can only iterate over an array or an instance of java.lang.Iterable
    Alors que je lis partout que l'on peux parcourir les treeMap avec un for-each...

    Pour info j'ai pas d'erreur pour le parcour du TreeSet

    Merci
    ++

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Bonjour,

    TreeSet implémente Comparable et pas TreeMap.

    http://java.sun.com/j2se/1.5.0/docs/api/index.html

    Tu peux par contre itérer sur les valeurs et sur les clefs grâce aux méthodes keySet() et values() qui retournent des Collections.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    On ne peut pas itérer directement sur une Map, mais seulement sur un tableau ou sur un objet implémentant l'interface Iterable (ce qui n'est pas le cas des Map).

    Par contre on peut utiliser les méthodes entrySet(), keySet() et values() pour itérer sur les différents éléments de la Map :
    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
    		Map<String, String> maMap = new TreeMap<String, String>();
    		maMap.put("key1","coucou1");
    		maMap.put("key4","coucou4");
    		maMap.put("key2","coucou2");
    		maMap.put("key8","coucou8");
    		maMap.put("key5","coucou5");
     
    		// Parcours des entrées (clef, valeur)
    		for (Map.Entry<String, String> entree : maMap.entrySet()) {
    			System.out.println("Clé : "+entree.getKey()+" Valeur : "+entree.getValue());
    		}
     
    		// Parcours des clefs
    		for (String key : maMap.keySet()) {
    			System.out.println("Clé : "+key);
    		}
     
    		// Parcours des valeurs
    		for (String value : maMap.values()) {
    			System.out.println("Valeur : "+value);
    		}
    a++

    PS : généralement, les noms de variables ne prennent pas de majuscule, et il est préférable de faire abstraction de l'implémentation de la collection (voir ce sujet : Collections: Interface et Objet)

  4. #4
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Je confirme que TreeMap (comme toute Map qui n'est pas une Collection d'ailleurs) n'implémente PAS l'interface Iterable.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    pour plus d'info sur Java 5.0 et ses nouveautés : http://lroux.developpez.com/article/java/tiger/

    a++

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    pour plus d'info sur Java 5.0 et ses nouveautés : http://lroux.developpez.com/article/java/tiger/

    a++

    MERKI BEAUCOUP !!!
    Tu m'as sauver la vie !!! Je cherche justement comment parcourir une TreeMap avec foreach ! ;-)

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    On ne peut pas itérer directement sur une Map, mais seulement sur un tableau ou sur un objet implémentant l'interface Iterable (ce qui n'est pas le cas des Map).

    Par contre on peut utiliser les méthodes entrySet(), keySet() et values() pour itérer sur les différents éléments de la Map :
    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
    		Map<String, String> maMap = new TreeMap<String, String>();
    		maMap.put("key1","coucou1");
    		maMap.put("key4","coucou4");
    		maMap.put("key2","coucou2");
    		maMap.put("key8","coucou8");
    		maMap.put("key5","coucou5");
     
    		// Parcours des entrées (clef, valeur)
    		for (Map.Entry<String, String> entree : maMap.entrySet()) {
    			System.out.println("Clé : "+entree.getKey()+" Valeur : "+entree.getValue());
    		}
     
    		// Parcours des clefs
    		for (String key : maMap.keySet()) {
    			System.out.println("Clé : "+key);
    		}
     
    		// Parcours des valeurs
    		for (String value : maMap.values()) {
    			System.out.println("Valeur : "+value);
    		}
    a++

    PS : généralement, les noms de variables ne prennent pas de majuscule, et il est préférable de faire abstraction de l'implémentation de la collection (voir ce sujet : Collections: Interface et Objet)
    Oops me suis trompé de citation désolé Merci encore

Discussions similaires

  1. [Debutant(e)]Pb parcours de tableau
    Par joquetino dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 22/09/2004, 09h08
  2. [TreeMap] comparer et fusionner deux TreeMap
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 06/09/2004, 11h49
  3. [LG]Lenteur de parcours de fichier
    Par YéTeeh dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2003, 22h57
  4. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 18h41
  5. arbre de parcour d'arborescence windows
    Par chupachoc dans le forum Composants
    Réponses: 7
    Dernier message: 09/09/2002, 08h09

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