CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[java][help] Equals() et compareto()

LeMediocrate
LeMediocrate
Niveau 9
06 septembre 2017 à 15:08:44

Bonjour à tous,

voila je suis débutant en java et dans la programmation orientée objet et je comprends toujours pas quand redéfinir equals et compare. Dans quel situation.

Donc voila je viens vous demander pour savoir si l'un de vous peut m'expliquer , si vous avez des exemples simples je suis preneur même en anglais , j'ai cherché sur google et aucun m'a paru simple.

merci d'avance

Bunyan
Bunyan
Niveau 17
06 septembre 2017 à 17:00:58

Sentrance

[...] compareto() prend uniquement des strings.

Je suis curieux de voir d'où tu sors ça vu que le prototype de compareTo est

compareTo(T o)

Soit un type générique suivant le type implémentant l'interface Comparable.

@LeMediocrate
Par cohérence, lorsque tu redéfinis equals, redéfinis compareTo, que les 2 résultats soient cohérents et consistants. Si deux objets sont égaux via equals, mais différent via compareTo, tu auras de grosses surprises et une incohérence majeure.

Au niveau de l'utilité, equals te permet uniquement de connaître l'égalité. compareTo est plus général puisqu'il te permet d'ordonner tes objets.
Typiquement, lorsque tu fais un comparateur en classe interne (anonyme ou non), tu vas utiliser le compareTo.

Pour "quand redéfinir", je te renvois à la documentation de l'interface Comparable : https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
Où est notamment écrit "The natural ordering for a class C is said to be consistent with equals if and only if e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2) for every e1 and e2 of class C. Note that null is not an instance of any class, and e.compareTo(null) should throw a NullPointerException even though e.equals(null) returns false."

sentrance
sentrance
Niveau 10
06 septembre 2017 à 19:33:08

Le 06 septembre 2017 à 17:00:58 Bunyan a écrit :

Sentrance

[...] compareto() prend uniquement des strings.

Je suis curieux de voir d'où tu sors ça vu que le prototype de compareTo est

compareTo(T o)

Soit un type générique suivant le type implémentant l'interface Comparable.

@LeMediocrate
Par cohérence, lorsque tu redéfinis equals, redéfinis compareTo, que les 2 résultats soient cohérents et consistants. Si deux objets sont égaux via equals, mais différent via compareTo, tu auras de grosses surprises et une incohérence majeure.

Au niveau de l'utilité, equals te permet uniquement de connaître l'égalité. compareTo est plus général puisqu'il te permet d'ordonner tes objets.
Typiquement, lorsque tu fais un comparateur en classe interne (anonyme ou non), tu vas utiliser le compareTo.

Pour "quand redéfinir", je te renvois à la documentation de l'interface Comparable : https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
Où est notamment écrit "The natural ordering for a class C is said to be consistent with equals if and only if e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2) for every e1 and e2 of class C. Note that null is not an instance of any class, and e.compareTo(null) should throw a NullPointerException even though e.equals(null) returns false."

Effectivement, ça fais longtemps que je n'ai pas fais de Java et dans mes souvenirs c'était le cas.
Je supprime mon message pour éviter de donner de mauvaises réponses.

Bunyan
Bunyan
Niveau 17
07 septembre 2017 à 09:56:44

Y'a pas de souci, merci ^^

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment