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 :

Dictionnaire avec des listes en valeurs


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    L1 MI
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : L1 MI

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut Dictionnaire avec des listes en valeurs
    Bonjour / bonsoir,

    Je souhaite réaliser un petit programme qui consiste à trouver des combinaisons de mots de tailles définies possible à faire avec des caractères saisis.

    J'ai déjà réaliser un programme dans le genre en python et pour stocker les mots j'ai utiliser un dictionnaire avec le mot trier alphabétiquement ( arbre --> aberr ) en clef et une liste de mots en valeur.

    Je voudrais faire la même chose en Java mais je bloque, comment faire pour que ce ne soit pas la référence de la liste comme valeur mais la liste avec ses valeurs ? Si c'est possible bien évidemment.

    Voici le code, donc ici à la fin je me retrouve avec des listes vides.

    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
     
    Hashtable<String, ArrayList<String>> dic = new Hashtable<String, ArrayList<String>>();
            ArrayList<String> newL = new ArrayList<String>();
            for(int i = 0; i < al.size(); i++){
                String mot = al.get(i);
                String motS = Sort(mot);
                if(dic.containsKey(motS)) {
                    newL.addAll(dic.get(motS));
                    newL.add(mot);
                    dic.put(motS, newL);
                }
                else {
                    newL.add(mot);
                    dic.put(motS, newL);
                }
                newL.clear();
            }

  2. #2
    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,


    Tu utilises une seule et même liste, que tu effaces à la fin. Donc en toute logique elle est vide.

    Il faut créer une nouvelle liste pour chaque clef.


    Sinon :
    • Hashtable est plutôt dépassé. Préfères-lui HashMap.
    • Il est préférable de rajouter de l'abstraction en utilisant les interface Map et List.
    • Si al est une collection, il est préférable de la parcourir via un for-each.



    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Map<String, List<String>> dic = new HashMap<String, List<String>>();
    	for (String mot : al) {
                String motS = Sort(mot);
     
                List<String> list = dic.get(motS);
                if (list==null) {
                      list = new ArrayList<String>();
                      dic.put(motS, list);
    	    }
                list.add(mot);
            }
    Remarque : j'ignore ce que fait la méthode "Sort()". Son nom est troublant (elle trie ? mais quoi) et ne respecte pas les conventions de nommage...


    a++

  3. #3
    Membre averti
    Homme Profil pro
    L1 MI
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : L1 MI

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut
    Merci pour la réponse et les conseils !

    Et j'ai modifié le nom de la méthode

    Bonne soirée !

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

Discussions similaires

  1. COUNT avec des dates sur valeurs non dédoublonnées ?
    Par Invité dans le forum Langage SQL
    Réponses: 14
    Dernier message: 10/10/2014, 21h25
  2. Réponses: 9
    Dernier message: 08/07/2014, 17h41
  3. Intégrer un fichier XML avec des milliers de valeurs
    Par talendBD dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 09/08/2013, 09h47
  4. Réponses: 12
    Dernier message: 10/10/2012, 16h04
  5. Une map avec des clefs à plusieurs valeurs
    Par jasmin59000 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/08/2011, 11h39

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