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

Java Discussion :

Redefinir Hashcode et equals


Sujet :

Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut Redefinir Hashcode et equals
    Bonjour, sous Hibernate lorsque je recupere plusieur fois la meme row, les objets que j'obtient ont tous le meme hashcode, ce qui est logique.

    Ce que je voudrais faire si cest possible, c'est changer le comportement de equals() pour ces objets, je ne veux pas qu'il verifie si mes objets sont equivalents, j'aimerais plutot qu'il verifie si les references que je compare appartiennent les deux au meme objet natif/en mémoire.

    En faites de cette facon, je pourrais utiliser un Hashset sans probleme pour y stocker mes objets equivalents tout en étant sur que 2 references appartenant au meme objet concret ne puisse jamais se retrouve dans le set.

    j'espere avoir reussis à me faire comprendre correctement...

    merci d'avance pour vos reponses

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut
    J'ai trouvé un truc interessant qui correspond a ce que je recherche par contre j'aimerais savoir si je peux l'utiliser en respectant la license apache 2.0 ou si maintenant que google ont tripoté le fichier je ne peux plus?

    ici...

  3. #3
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    slt
    Je pense qu'une simple ré-implémentation de la méthode equals () devrait faire l'affaire. Toute fois, il faudrait faire attention a conservé le même nom de la méthode, les mêmes arguments, et le même type retourné. Dans le cas contraire, ça va être considérer comme une surcharge de la méthode.
    Bon courage, A+ .

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ou plus connement tu utilise un Set se basant sur l'identité plutot que sur equals


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tonSet = Collections.newSetFromMap(new IdentityHashMap());
    parce que joyeusement violer le fonctionnement de equals et hashCode pour un problème qui ne dois se situer probablement que sur un seul appel (n'oublie pas qu'en interne hibernate utilise aussi les set, list et maps pour gérer ses données!!) risque d'avoir de sacrés éffets de bord

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ou plus connement tu utilise un Set se basant sur l'identité plutot que sur equals


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tonSet = Collections.newSetFromMap(new IdentityHashMap());
    parce que joyeusement violer le fonctionnement de equals et hashCode pour un problème qui ne dois se situer probablement que sur un seul appel (n'oublie pas qu'en interne hibernate utilise aussi les set, list et maps pour gérer ses données!!) risque d'avoir de sacrés éffets de bord
    ouhhhh je ne savais pas qu'on pouvais faire cela, merci beaucoup tchize, oui j'allais tester avec hibernate mais les effets de bord m'inquiétais aussi.

    merci, resolu, théoriquement sa devrais fonctionner parfaitement

    je trouvais sa bizzare qu'un IdentityHashMap sois dans le JDK est pas un set.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ou plus connement tu utilise un Set se basant sur l'identité plutot que sur equals


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tonSet = Collections.newSetFromMap(new IdentityHashMap());
    parce que joyeusement violer le fonctionnement de equals et hashCode pour un problème qui ne dois se situer probablement que sur un seul appel (n'oublie pas qu'en interne hibernate utilise aussi les set, list et maps pour gérer ses données!!) risque d'avoir de sacrés éffets de bord
    Un bon +1, c'est le meilleur moyen pour planter un certain nombre de chose... Et si tu t'en rends compte qu'une semaine après, bonjour pour faire le lien avec ta redéfinition.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/07/2009, 14h33
  2. Redéfinir equals et hashcode
    Par maxired dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2009, 18h53
  3. Réponses: 0
    Dernier message: 26/11/2007, 15h47
  4. Modifier le template de equals et hashCode
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/04/2007, 15h26
  5. [Optim Code]equals and hashCode are not paired
    Par anitshka dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 15/09/2006, 23h25

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