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 :

différence entre interface comparable et comparator ?


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club Avatar de Mr-Mobou
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Points : 65
    Points
    65
    Par défaut différence entre interface comparable et comparator ?
    j'ai un peu chercher sur la différence entre interface comparable et comparator mais j'ai encore mal a comprendre exactement la différence ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Points : 84
    Points
    84
    Par défaut
    Si ta classe Java qui doit être triée est toujours triée de la même manière, tu peux utiliser l'interface comparable.

    Celle-ci est à rattacher directement à ta classe java à trier.
    Si ta classe implémente cette interface, les méthodes de tri (Collections.sort(l) Java s'appuieront sur la méthode compareTo implémentée de cette interface pour réaliser le tri.

    Si par contre, tu as besoin d'avoir différents types de tris pour une même classe : croissant, décroissant, dans un cas avec tels attributs dans un autre cas avec tels autres attributs... il te faut travailler avec l'interface comparator.

    Dans ce cas, ton interface n'est pas directement rattachée à ta classe. Il te faut créer une nouvelle classe (ou n nouvelles classes) qui implémente l'interface comparator.

    Quand tu auras besoin de faire un tri, tu devras en plus de fournir la liste contenant tes classes à trier fournir ta classe implémentant le comparator (Collections.sort(l, classeComparator).

    Suivant le type de tri réalisé, tu utiliseras la classe réalisant la comparaison correspondante.

    Arnaud

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par Coulon Arnaud Voir le message
    Si ta classe Java qui doit être triée est toujours triée de la même manière, tu peux utiliser l'interface comparable.

    Celle-ci est à rattacher directement à ta classe java à trier.
    Si ta classe implémente cette interface, les méthodes de tri (Collections.sort(l) Java s'appuieront sur la méthode compareTo implémentée de cette interface pour réaliser le tri.

    Si par contre, tu as besoin d'avoir différents types de tris pour une même classe : croissant, décroissant, dans un cas avec tels attributs dans un autre cas avec tels autres attributs... il te faut travailler avec l'interface comparator.

    Dans ce cas, ton interface n'est pas directement rattachée à ta classe. Il te faut créer une nouvelle classe (ou n nouvelles classes) qui implémente l'interface comparator.

    Quand tu auras besoin de faire un tri, tu devras en plus de fournir la liste contenant tes classes à trier fournir ta classe implémentant le comparator (Collections.sort(l, classeComparator).

    Suivant le type de tri réalisé, tu utiliseras la classe réalisant la comparaison correspondante.

    Arnaud
    Afin de résumer un peu cette parfaite explication :
    Lorsque l'ont implémente comparable on définit une comparaison naturelle.
    Lorsque l'ont implémente un comparator, on définit une comparaison possible.

    Souvent on implémente un ensemble de comparator, et dans l'implémentation de comarable on délègue l'appel vers un comparator (ordre par défaut).
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2012, 09h31
  2. [AC-2003] Différence entre 2 nombres comparés à une valeur
    Par lucas-18 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/10/2011, 15h04
  3. la différence entre la méthode " equals" et "compare"
    Par van der zahir dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/07/2011, 11h55
  4. différence entre interface et classe abstraite
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/03/2010, 11h36
  5. Réponses: 6
    Dernier message: 26/11/2007, 17h06

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