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

Java Discussion :

Trier un TreeMap avec sa valeur


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Par défaut Trier un TreeMap avec sa valeur
    Bonjour,

    Je souhaite trier une TreeMap avec sa valeur de type string mais j'obtiens une erreur de compilation dans cette ligne TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>(descendingEmployeeNameComparator); (ligne 11)

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    import java.util.Comparator;
     
    public class DescendingEmployeeNameComparator implements Comparator<String> {
     
    	@Override
    	public int compare(String empName1, String empName2) {
    		return empName1.compareToIgnoreCase(empName2);
    	}
     
    }

    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
     
     
    import java.util.Comparator;
    import java.util.TreeMap;
     
    public class TreeMapExample {
    	public static void main(String[] args) {
     
    		Comparator<String> descendingEmployeeNameComparator = new DescendingEmployeeNameComparator();
     
    		TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>(descendingEmployeeNameComparator);
     
    		treeMap.put(20, "Balu");
    		treeMap.put(10, "Ajay");
    		treeMap.put(40, "Carol");
    		treeMap.put(30, "Dave");
     
    		System.out.println("treeMap : " + treeMap + "\n");
     
    		Comparator<?> comparator = treeMap.comparator();
     
    	}
    }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Par défaut
    Ahhh !! C'est trier, pas tirer... Je me disais aussi
    Pourrais-tu nous montrer l'erreur ?

  3. #3
    Membre très actif
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Par défaut
    lol , j'ai modifié le titre

    J'ai une erreur de compilation .

    eclipse me propose deux solutions : (aucune ne marche)

    Comparator<? super Integer>
    descendingEmployeeNameComparator = new
    DescendingEmployeeNameComparator();


    Comparator<? super Integer>
    descendingEmployeeNameComparator = new
    DescendingEmployeeNameComparator();

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Par défaut
    Le TreeMap se base sur la valeur de la clé pour trier son contenu. La clé définie ici est de type Integer, mais le comparateur que tu utilises est un comparateur de String. Donc cela ne peut pas marcher. Tu dois donc utiliser un comparateur d'entiers.

  5. #5
    Membre très actif
    Inscrit en
    Septembre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 172
    Par défaut
    Mais moi je ne veux pas trier avec les clés , je veux trier les valeurs de types String.

    avez vous une idée coment je peux faire ?

    Merci

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par ghir_ana Voir le message
    avez vous une idée coment je peux faire ?
    Une List au lieu d'une Map ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ghir_ana Voir le message
    Mais moi je ne veux pas trier avec les clés , je veux trier les valeurs de types String.

    avez vous une idée coment je peux faire ?

    Merci
    Avec une TreeMap, ce ne sera pas possible, la treemap est triée par clé, point.
    Pourquoi as tu besoin besoin de trie par valeur? Ce n'est pas courant comme besoin et ça ressmelbe plus à un problème de designe, genre tu aurais inversé dans ton design la clé et la valeur.

    Sinon, je ne connais pas d'implémentation de Map qui trie par valeur donc tu va être bon, je pense, pour faire ta propre implémentation...

    Si la Map n'évolue pas dans le temps, une solution simple serait de partir d'un Map non triée, de récupérer sont entrySet, de le trier dans une nouvelle List<EntrySet<Integer,String>>, et d'utiliser cette liste pour reconstruire une LinkedHashMap<Integer,String> qui, elle, aura l'ordre en question lors de l'itération.

Discussions similaires

  1. [XL-2003] Trier combobox avec des valeurs numériques sans doublon
    Par goldfinger13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/02/2012, 20h31
  2. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  3. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15
  4. Trier une table avec valeur de differentes unités
    Par Sydaze dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2005, 11h43
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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