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 :

[TreeMap] comparer et fusionner deux TreeMap


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut [TreeMap] comparer et fusionner deux TreeMap
    Bonjour,
    J'ai deux treeMap qui contiennent chaqun comme clé un String (qui represente un nom) et un objet Float comme valeur.
    Les deux treeMap possedent la meme liste de clé (les meme nom).
    Je voudrais donc comparer mon premier treeMap au second et des que je tombe sur la meme clé, je veux enregistrer la somme des float associé.
    J'ai commencé à ecrire le code suivant:
    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
     
    	public TreeMap userProfil = new TreeMap(); //mon premier treeMap
    	public TreeMap profil = new TreeMap(); //mon deuxieme treeMap
     
    	Iterator itUserProfil1 = userProfil.values().iterator(); //iterator pour mon premier treeMap
    	Iterator itUserProfil2 = userProfil.keySet().iterator();
     
    	Iterator itProfil1 = profil.values().iterator(); //iterator pour mon deuxieme treeMap
    	Iterator itProfil2 = profil.keySet().iterator();
     
    		while(itUserProfil2.hasNext()){
    			while(itProfil2.hasNext()){
     
                                    //comparer itUserProfil2 et itProfil2
                                    //si egale alors on additionne itUserProfil1 et itProfil1
     
    				}
    			}
    		}
    Le probleme est que je bloque deja pour comparer les clé des deux treeMap. J'ai essayer par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(itUserProfil2.next().equals(itProfil2.next()))
    Mais ca me renvoie une erreur java.util.NoSuchElementException
    Je me demande egalement comment faire pour additionner ensuite mes valeur puisqu'il s'agit d'objet float, Ca s'additionne comme des variables float?
    Si vous pouvez m'eclairer sur mon problème, merci d'avance.

  2. #2
    Membre habitué Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Points : 174
    Points
    174
    Par défaut
    normal que tu aies l'erreur dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while(itUserProfil2.hasNext()){ 
             while(itProfil2.hasNext()){ 
                                    //comparer itUserProfil2 et itProfil2 
                                    //si egale alors on additionne itUserProfil1 et itProfil1 
                                    if(itUserProfil2.next().equals(itProfil2.next()))  {...}
     
                } 
             } 
          }
    En effet tu prends l'element suivant de itUserProfil2 pour chacune des itérations dans itProfils2 donc au bout d'un certain temps il n'y a plus d'elements. d'ou l'erreur NoSuchElementException

  3. #3
    Membre habitué Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Points : 174
    Points
    174
    Par défaut
    je viens d'aller voir la doc de la classe java.util.Map chez sun va la voir elle va t'aider :

    il y notemment une fonction qui s'appelle putAll() qui fait je pense ce que tu souhaites faire.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut Re: [TreeMap] comparer et fusionner deux TreeMap
    tu ferais mieux d'utiliser la methode containsKey(Object)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public TreeMap userProfil = new TreeMap();
    public TreeMap profil = new TreeMap(); 
     
    Iterator itUserProfil2 = userProfil.keySet().iterator();
     
    while(itUserProfil2.hasNext()){
       String key = (String) itUserProfil2.next();
       if (profil.containsKey(key)) {
          ...
       }
    }
    Quant a la methode putAll(Map), tu vas perdre des donnees si tes 2 maps ont des cles identiques

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses.
    J'ai été voir dans l'API de sun mais je ne trouve pas de méthode qui permette de faire directement ce que je veux.
    La méthode putAll() copie toutes les entrées d'une treeMap dans une autres treeMap. En fesant des test je me rend compte que quand on insère une clé deja existante alors l'ancienne est supprimé donc je ne peux pas additionner les valeurs correspondantes à mes clées.
    Si vous avez d'autres pistes à explorer, merci beaucoup.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Mon message s'est croisé avec celui de Dude, je test tout de suite la méthode containsKey().
    Ca a l'air de répondre tt à ce que j'ai besoin. merci

  7. #7
    Membre habitué Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Points : 174
    Points
    174
    Par défaut
    Quant a la methode putAll(Map), tu vas perdre des donnees si tes 2 maps ont des cles identiques
    exact ! j'avais pas bien lu le problème.

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

Discussions similaires

  1. pour fusionner deux partitions
    Par StyleXP dans le forum Windows XP
    Réponses: 2
    Dernier message: 21/01/2006, 17h48
  2. FUSIONNER DEUX COLONNES : est ce posible ?
    Par ePoX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/12/2005, 20h59
  3. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  4. [Debutant] [JTable] Fusionner deux cellules
    Par devil26 dans le forum Composants
    Réponses: 4
    Dernier message: 03/05/2005, 13h39

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