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 :

Map <String, Integer> trié par ordre alphabétique et sans redondance


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut Map <String, Integer> trié par ordre alphabétique et sans redondance
    Bonsoir tout le monde,
    pour un mot saisie au clavier , je développe une méthode qui prend en paramêtres une liste de sous chaine de ce mot pour enfin retourner une map<String, Integer> qui sera rempli par l'ensemble de sous chaine (trié par ardre alphabétique) ainsi que le nombre de fréquence de chacun de ces sous chaine sans redondance

    le code ci-dessous :J'ai essayé avec collections.fréquency pour obtenir le nombre de fréquence unique . Merci de m'aider à remplir le map d'une façon qu'il soit trié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     private Map<String, Integer> myMapTrié = new HashMap<String, Integer>();
        public Map<String, Integer> occurence(ArrayList<String> list) {  
            Set<String> unique = new HashSet<String>(list);
            for (String key : unique) {
               myMapTrié.put(key, Collections.frequency(list, key));
     
            }
            System.out.println(myMapTrié);
            return myMapTrié;
        }
    Un exemple du résultat obtenu:
    Nom : Capture.PNG
Affichages : 1441
Taille : 1,8 Ko
    Mais le resultat souhaité :

    bon =2
    nbo=1
    onb=1
    on_=1
    _bo=1

    Merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Une HashMap n'a pas de notion d'ordre.
    Les couples clef/valeurs y sont placé de manière à optimiser l'accès.


    Si tu veux conserver l'ordre d'insertion, il faut utiliser une LinkedHashMap.
    Si tu veux que les données soient triées selon la clef, il faut utiliser un TreeMap.

    Par contre si tu veux trier selon la valeur cela risque d'être un peu plus compliqué...



    a++

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Merci ,

    En fait même avec LinkedHashMap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     private Map<String, Integer> myMapTrié = new LinkedHashMap<String, Integer>();
     
            public Map<String, Integer> occurence(ArrayList<String> list) {  
            Set<String> unique = new HashSet<String>(list);
            for (String key : unique) {
               myMapTrié.put(key, Collections.frequency(list, key));
     
            }
            System.out.println(myMapTrié);
            return myMapTrié;
        }
    ça ne me donne pas un tri correct (qui conserve l'ordre d'insertion)
    Nom : caca.PNG
Affichages : 1454
Taille : 1,6 Ko

    Merci

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je n'avais pas vu que tu utilisais un HashSet... qui n'a pas de notion d'ordre non plus (donc cela modifie l'ordre l'insertion).


    Au passage je n'avais pas fait gaffe non plus au fait que la Map que tu retournes était un attribut private ?
    Il y a une raison à cela ? Attention aux effets de bord...



    Bref perso à la place je ferais plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public Map<String, Integer> occurence(List<String> list) {
    		Map<String, Integer> map = new LinkedHashMap<String, Integer>();
    		for (String key : list) {
    			if (map.containsKey(key)==false) {
    				map.put(key, Collections.frequency(list, key));
    			}
    		}
    		return map;
    	}

    a++

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Merci
    C'est exactement ce que je cherche

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

Discussions similaires

  1. Tri par ordre alphabétique d'un tabular
    Par max0u86 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 21/08/2008, 22h31
  2. Tri par ordre alphabétique sans tenir compte d'une chaîne
    Par Msieurduss dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/06/2008, 10h32
  3. problème tri par ordre alphabétique
    Par bibi 8002 dans le forum Word
    Réponses: 17
    Dernier message: 18/06/2008, 15h21
  4. Réponses: 8
    Dernier message: 26/07/2007, 11h46
  5. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27

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