Un point d'ombre avec la collection HashMap
Fermé
fuks
-
24 juin 2013 à 21:49
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 25 juin 2013 à 19:06
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 25 juin 2013 à 19:06
A voir également:
- Un point d'ombre avec la collection HashMap
- Point de suite word - Guide
- Point de restauration - Guide
- Comment inserer une video dans un power point - Guide
- Créer une carte avec des points - Guide
- Point d'exclamation à l'envers - Forum Bureautique
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
25 juin 2013 à 19:06
25 juin 2013 à 19:06
C'est quoi ta méthode main ?
D'après moi, c'est parce que ton compte n'est effectivement pas ajouté, en cause ta méthode d'ajout :
Tu auras toujours null en faisant un get(cle) avec une clé qui n'existe pas, en particulier lorsque la map est vide, tu ne la remplis donc jamais, tu devrais donc toujours avoir "Compte deja ajoute".
Il faudrait au minimum remplacer ton test par celui que tu utilises ailleurs :
De manière générale je trouve ton code mal pensé, je pense qu'un HashSet<Compte> correspondrait plus à tes besoins, en redéfinissant bien sûr le hashCode de ta classe Compte de manière judicieuse.
D'après moi, c'est parce que ton compte n'est effectivement pas ajouté, en cause ta méthode d'ajout :
//Ajouter un compte public void ajouteUnCompte() { Compte nouveau = new Compte(); long cle = creerUneCle(nouveau); if (listeCompte.get(cle) != null) { listeCompte.put(cle, nouveau); } else { System.out.println("Compte deja ajoute"); } }
Tu auras toujours null en faisant un get(cle) avec une clé qui n'existe pas, en particulier lorsque la map est vide, tu ne la remplis donc jamais, tu devrais donc toujours avoir "Compte deja ajoute".
Il faudrait au minimum remplacer ton test par celui que tu utilises ailleurs :
if (listeCompte.containsKey(cle))
De manière générale je trouve ton code mal pensé, je pense qu'un HashSet<Compte> correspondrait plus à tes besoins, en redéfinissant bien sûr le hashCode de ta classe Compte de manière judicieuse.