[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:
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 ?
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:
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++