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 :

Map problème de clés


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut Map problème de clés
    Bonjour,
    J'ai un objet monObjetA et un objet monConteneur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class MonConteneur {
    	private A key;
     
    	// Plein d'autre champs ...
     
    	public MonConteneur(A key) {
    		this.key = key;
    	}
     
    	public A getKey() { return key;}
     
    }
    et une HashMap<MonConteneur, Integer>.

    J'initialise un conteneur en faisant : new monConteneur(monObjetA);

    j'enregistre mes conteneurs dans la Map avec maHashMap.put(monConteneur, 1);
    Par contre, j'aimerai obtenir l'integer avec maHashMap.get(monObjetA);

    J'ai essayé de redéfinir la méthode hashcode de MonConteneur pour qu'il ne renvoie qu'uniquement key.hashcode(), idem pour equals, mais ça ne marche pas. On me renvoie toujours null.

    Avez vous une idée de comment je pourrais faire ?
    Je sais que mon implémentation est étrange, mais c'est du modding et je souhaite étendre les propriétés de monObjetA sachant que je ne peux pas toucher a cette classe.

    Merci d'avance pour vos réponses

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Encore faudrait-il que l'implémentation de equals et hashcode soit correcte dans la classe A... sinon, bah tu peux toujours déléguer à cette classe le calcul de hashcode, c'est peut-être moisi comme implém donc ne produit pas ce qu'il te faut...

    Si la classe A est mutable (son contenu peut changer après l'instanciation), ça devient par la même occasion un très mauvais candidat pour servir de clé de hashmap, etc...

    plein d'infos sur google: http://javarevisited.blogspot.ch/201...s-in-java.html (par exemple...)
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut
    Merci de ta réponse,
    J'avais un soucis avec le equals, je faisais un equals sur l'objet et non sur son attribut.
    Problème résolu

  4. #4
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour,

    Comme le signale Pill_S, il n'est pas conseillé d'utiliser des références d'objet dans la clé d'un hashmap. HashMap<MonConteneur, Integer>
    Si tu redéfinis hashcode et equals de la classe MonConteneur en te basant sur les attributs de celle-ci ça marchera aussi... à condition que les attributs de MonConteneur ne change jamais de valeur! ( ce qui ai somme toutes très contraignant).

    Utilise plutôt un IDUnique Integer attribut de la classe MonConteneur ( Ou quelque chose s'en rapprochant ).
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

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

Discussions similaires

  1. [SimpleXML] Google Maps, Problème d'encoding dans une boucle
    Par yahn dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/09/2006, 19h40
  2. [Mapping] problème de redirection
    Par rvfranck dans le forum Struts 1
    Réponses: 8
    Dernier message: 21/09/2006, 10h00
  3. [mapping] problème de connexion à une base sqlServer
    Par totoranky dans le forum Hibernate
    Réponses: 1
    Dernier message: 15/09/2006, 00h30
  4. Problème création clés étrangères
    Par sat478 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/05/2006, 15h53
  5. [EJB2.1 Entity] [BES] Mapping automatique et clés étrangères
    Par Bobby McGee dans le forum Java EE
    Réponses: 3
    Dernier message: 15/10/2003, 10h33

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