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 :

[HashMap][io]perte de l'ordre alphabétique/clés de la map


Sujet :

Collection et Stream Java

  1. #1
    HNT
    HNT est déconnecté
    Membre actif Avatar de HNT
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    448
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 448
    Points : 293
    Points
    293
    Par défaut [HashMap][io]perte de l'ordre alphabétique/clés de la map
    Bonjour,

    J'ai un problème avec un HashMap que j'utilise :

    J'affiche tout ce que ce hashMap contient dans une JList, il m'affiche correctement (par exemple aaaa puis cccc)Par contre après cette opération j'enregistre la hashMap dans un fichier, je ferme le soft et je le réouvre pour rajouter un nouvel objet et la ! si je bbbb, il me mettera bbbb aaaa cccc,

    Comment éviter cela et garder l'ordre ?

    Voici ma méthode de chargement de la hashMap, eclipse me donne un avertissement (voire code)
    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
    protected static HashMap <String,CompteFTP> load()
    	{
    		HashMap <String,CompteFTP> registre = new HashMap <String,CompteFTP>();
    		try
    		{
    			ObjectInputStream lectureDat = new ObjectInputStream(new FileInputStream("src"+separatorChar+"registre.dat"));
    			registre = (HashMap)lectureDat.readObject();
    		   /*
    			*Type Safety : The expression of the type HashMap needs unchecked conversion 
    			*to conform to HashMap <String,CompteFTP>
    			*/ 
    			lectureDat.close();	
    		}
    		catch (FileNotFoundException fnex)	{}
    		catch (Exception ex)
    		{
    			new ErrorFrame("Echec de chargement des comptes");
    		}
    		return registre;
    	}
    Par rapport au warning ok, je me doute bien qu'il veut que j'utilise les génériques, surtout que la HashMap a été déclarée comme ça. Est-ce que cela peut-etre la cause de mon problème ? Que dois-je écrire pour supprimer ce warning.

    Si ceci n'est pas la cause de mon problème, quelle est-elle ?
    The box said : "Requires windows 95, NT or better" so I installed Linux.

  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 Re: [HashMap][io]perte de l'ordre alphabétique/clés de la ma
    Salut,


    Citation Envoyé par HNT
    Par rapport au warning ok, je me doute bien qu'il veut que j'utilise les génériques, surtout que la HashMap a été déclarée comme ça. Est-ce que cela peut-etre la cause de mon problème ? Que dois-je écrire pour supprimer ce warning.
    En effet le warning vient de là ! Tu ne peux pas supprimer ce warning car les cast sont vérifié à l'exécution alors que les generics sont vérifié à la compilation.

    La seule chose que tu peux faire pour éviter ce warning c'est d'utiliser l'annotation @SuppressWarnings sur ta méthode (si ton compilateur/EDI l'utilise -- JDK 1.5.0_06 pour Javac, ou eclipse 3.1 par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @SuppressWarnings("unchecked")
    protected static HashMap <String,CompteFTP> load()

    Citation Envoyé par HNT
    Si ceci n'est pas la cause de mon problème, quelle est-elle ?
    Tout simplement que les Map ne garantissent pas que l'ordre d'ajout soit conservé (c'est indiqué dans l'API et dans la FAQ : Quels sont les différents types de Map ?).


    Enfin je te conseille de cacher l'implémentation en retournant une Map au lieu d'une HashMap, ce qui te laisse une plus grande liberté dans le futur si jamais tu souhaite changer d'implémentation de Map...

    a++

  3. #3
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Si je comprends bien tu veux que ta map soit dans un certain ordre.

    Dans ce cas utilise plutôt une SortedMap. Une classe qui l'implémente est le TreeMap.
    Ya juste à lui dire comment il faut trier et c'est bon.
    Un petit coup d'oeil a la doc et c'est réglé.
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  4. #4
    HNT
    HNT est déconnecté
    Membre actif Avatar de HNT
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    448
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 448
    Points : 293
    Points
    293
    Par défaut
    Ok merci, ca marche impecablement avec les SortedMap
    The box said : "Requires windows 95, NT or better" so I installed Linux.

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

Discussions similaires

  1. Affichage par ordre alphabétique
    Par masseur dans le forum Langage
    Réponses: 8
    Dernier message: 08/12/2005, 11h41
  2. [débutant] tri vecteur string ordre alphabétique
    Par Tom Sawyer dans le forum SL & STL
    Réponses: 2
    Dernier message: 26/07/2004, 17h40
  3. Inhiber l'ordre alphabétique des attributs sous Xerces
    Par philippe rousseau dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 04/12/2003, 17h19
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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