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."