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 :

Problème de LinkedHashMap + ordre d'insertion


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Par défaut Problème de LinkedHashMap + ordre d'insertion
    Bonjour,

    J'ai un problème concernant ma LinkedHashMap.

    Je l'utilise car j'ai besoin de gardé l'ordre d'insertion mais le problème est que celle ci ne me le garde pas.

    Je m'explique, j'ai une LinkedHashMap<MyClass, Integer>. (MyClass étant une classe que j'ai créé).

    Cependant, lorsque j'insère un élément et que je regarde à l'aide du debugger d'Eclipse, je m'aperçois que celui ci est inséré aléatoirement.

    Et je remarque aussi que ma table correspond à une HashMap. Normal?


    Une explication ? Une solution ?

  2. #2
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Salut,

    Personnellement, dans mes DAO je declare

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private static Map<String, Animals> animalsMap = new LinkedHashMap<String, Animals>();

    Dans mon managedBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private Map<String, Animals> animalsMap;
    animalsMap = new AnimalsFacade().map();
    for (int i = 0; i < listAnimals.size(); i++) {
    animalsMap.put("" + listAnimals.get(i).getId(), listAnimals.get(i));
    ...}
    Avec ceci tout reste dans l'ordre croissant de ma bdd

    J'espere que ceci t'aura aider.

    Sinon soit plus precis avec des bouts de codes ou autres

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Par défaut
    Merci de ton aide.

    Voici un exemple de mon utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private Map<MyClass, Integer> myMap = new LinkedHashMap<MyClass, Integer>();
     
    myMap.put(new MyClass("ok"), 1);
    Et là le problème est que mon insertion n'est pas ajouté au premier élément de ma map.

    J'ai fait un test en inversant MyClass et Integer et j'ai pu m'apercevoir qui lorsque je mettais par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myMap.put(1, new MyClass("ok"));
    Cela s'insère à la case 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myMap.put(5, new MyClass("ok"));
    Cela s'insère à la case 5.

    Il ne mets donc pas mes éléments en ordre d'insertion.

  4. #4
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Voici qui pourrait peut etre t'aider

    Lien

    Si ceci ne le permet fais nous signe

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Par défaut
    Je vais regarder le lien (que j'ai déjà regardé en diagonale) mais il est a noté que moi je ne veux pas effectuer de tri selon certains critères mais juste garder l'ordre d'insertion.

    Et ce qui est étrange c'est que la LinkedHashMap est censé me garder cette ordre d'insertion peu importe le type de la clé. Mais peut être que cet ordre d'insertion ne commence par forcément à l'indice 0 du tableau, puis 1, etc ?

  6. #6
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Je viens de faire un test et voici mon resultat


Discussions similaires

  1. Problème avec l'ordre d'insertion des lignes avec BULK INSERT
    Par TomtomGesti dans le forum Développement
    Réponses: 3
    Dernier message: 18/07/2014, 16h50
  2. collection avec l'ordre d'insertion
    Par keopsk dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2006, 20h13
  3. [Collections]Garder l'ordre d'insertion
    Par Leyne dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 13/12/2005, 19h25
  4. Syntaxe tableaux dans ordre SQL INSERT
    Par lio33 dans le forum SQL
    Réponses: 6
    Dernier message: 19/10/2005, 17h07
  5. Réponses: 11
    Dernier message: 17/01/2005, 16h58

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