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 :

Question bête : égalité et comparateur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut Question bête : égalité et comparateur
    Salut,

    J'ai déjà rencontré ce problème plusieurs fois.

    Pour comparer des objets, on peut utiliser des Comparator<T,T> (qui a l'avantage sur Comparable<T> de pouvoir avoir plusieurs ordres différents selon les critères).

    Pourquoi il n'y a pas une interface similaire pour l'égalité?
    On a bien .equals(Object o)... Mais on n'a pas Equality<T,T>.

    C'est bien génant parfois...

    EDIT: c'est sûr on peut faire une classe qui est composée d'un T (un attribut de type T), et on redéfinit le .equals(Object)... Mais c'est moyen...

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Tu l'as trouvé où ton Comparator<T, T> ? Moi je vois dans java.util Interface Comparator<T>. Et une méthode :
    equals(Object obj)
    Indicates whether some other object is "equal to" this comparator.
    C'est pas ce que tu veux ?

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Janitrix
    Tu l'as trouvé où ton Comparator<T, T> ? Moi je vois dans java.util Interface Comparator<T>. Et une méthode :
    C'est pas ce que tu veux ?
    Effectivement c'est Comparator<T> (évidemment <T, T> ça n'a pas de sens).

    Non c'est pas cette méthode qu'il faut (elle est faite ici pour tester l'égalité des comparators)

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Arf désolé j'ai pas pris le temps de lire la description de la méthode. Sinon, tu peux toujours l'implémenter toi même, ça doit pas être très dure . Juste, pour faire un algorithme de comparaison efficace mais là tu es bien aidé par Java. Un peu d'aide ?

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Pour montrer le pattern auquel j'avais pensé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class ABC {
     
        private int state;
     
        public Object otherEqualizer() {
            return new Object() {
     
                @Override
                public boolean equals(Object other) {
                    return other != null && other instanceof ABC && state == ((ABC) other).state;
                }
            };
        }
     
        @Override
        public boolean equals(Object other) {
            return false;
        }
     
    }
    Je trouve ça moins propre qu'un comparator... (mais bon on ne peut pas non plus faire notre interface nous-même, car il faudrait avoir un argument dans les collections pour par exemple la méthode remove)

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Le comparator renvoie 0 pour deux objets "égaux", ça fait l'affaire non ?

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ®om
    Pour montrer le pattern auquel j'avais pensé
    Je ne comprend pas vraiment l'intérêt de cela... tu pourrais expliquer ton objectif ???

    a++

Discussions similaires

  1. Question bête (PHP veux se télécharger)
    Par Nicos77 dans le forum Langage
    Réponses: 12
    Dernier message: 12/10/2005, 15h21
  2. Réponses: 7
    Dernier message: 05/10/2005, 11h29
  3. [VBA][Excel]Petite question bête !
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2005, 15h36
  4. [MFC] Question bête sur les CListBox
    Par gwendo dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2005, 16h43
  5. Numéro auto ===== Question bête
    Par Nicos77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 13h04

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