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

Langage Java Discussion :

Redéfinition de equals


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut Redéfinition de equals
    bonjour

    je suis à redéfinir equals
    voici donc mon code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public boolean equals(Object name)
    {
         if (this.nom.equals(((Humain)name).nom))
              System.out.println("Identique");
         else
              System.out.println("Non identique");
         return;
    }
    est-ce une bonne méthode? si oui comment faire pour retourner soit le mot identique ou non identique lorsque je ferai la comparaison.
    si non comment puis-je le faire

    merci!

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public boolean equals(Object o)
    {
      Humain temp=(Humain)o;
      if (this.nom.equals(temp.nom))
        return true;
      return false;
    }
    equals retourne un boolean, vrai si les deux objets sont égaux, faux sinon.

  3. #3
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Quelques améliorations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public boolean equals(Object o)
    {
      try {
         Humain temp=(Humain)o;
         if (this.nom != null) return this.nom.equals(temp.nom);
      } catch (ClassCastException e) { //on peut aussi laisser remonter l'exception ....
     
      }
      return false;
    }

  4. #4
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    Citation Envoyé par Ricky81
    Quelques améliorations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public boolean equals(Object o)
    {
      try {
         Humain temp=(Humain)o;
         if (this.nom != null) return this.nom.equals(temp.nom);
      } catch (ClassCastException e) { //on peut aussi laisser remonter l'exception ....
     
      }
      return false;
    }
    1) Ne jamais remonter une exception de type ClassCast dans un equals.
    Si c'est pas une classe de type Humain, tu retourne false.

    2) Ne pas oublier d'implementer la méthode qui va de paire avec equals (hashcode) pour mieux distribuer les objets dans les Hashtable, HashMap et autres

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par vbrabant
    2) Ne pas oublier d'implementer la méthode qui va de paire avec equals (hashcode) pour mieux distribuer les objets dans les Hashtable, HashMap et autres
    Sans oublier la méthode compareTo (interface Comparable) pour les tris dans les collections

  6. #6
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Citation Envoyé par Ricky81
    Sans oublier la méthode compareTo (interface Comparable) pour les tris dans les collections
    Mais non il ne me semble pas. Si l'on surcharge la méthode equals il faut redéfinir également hashcode mais compareTo ce n'est pas du tout obligé! Cette méthode est définie lorsque la classe implémente Comparable mais autrement pas.

Discussions similaires

  1. Map et redéfinition du equals et hashCode
    Par jojodu31 dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 02/12/2011, 15h33
  2. Redéfinition de equals
    Par robert_trudel dans le forum Débuter avec Java
    Réponses: 18
    Dernier message: 26/05/2008, 14h11
  3. redéfinition equals, hashmap et get
    Par oc_alex86 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/05/2007, 15h52
  4. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06
  5. [MFC] redéfinition de BEGIN_MESSAGE_MAP
    Par SethPech dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/03/2004, 13h59

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