Maison  >  Questions et réponses  >  le corps du texte

Manuel de développement Alibaba Java——Comparateur

L'image ci-dessus est la description dans "Alibaba Java Development Manual v1.2.0". Voici un contre-exemple, disant que la situation d'égalité n'est pas gérée, mais je pense :

o1.getId() > o2.getId()

N'est-ce pas l'inverse

o1.getId() <= o2.getId()

Je l'utilise habituellement comme ça. Pourriez-vous s'il vous plaît m'aider à expliquer la technique de cet endroit ? quelle est la raison?

PHPzPHPz2702 Il y a quelques jours946

répondre à tous(3)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-27 17:42:39

    Après une meilleure compréhension, la cause première du problème est que l'implémentation du tri du JDK7 a été modifiée en TimSort. Voir cet article pour plus de détails.
    http://blog.2baxb.me/archives...

    Quand j’ai répondu pour la première fois, je n’ai pas bien compris l’intention de l’auteur en posant la question, j’ai donc répondu un peu précipitamment et je m’en excuse.
    Le contenu de la réponse précédente est divisé hors ligne. Parce qu'il y a une discussion avec @wanghaa sur l'ancienne réponse dans les commentaires de réponse, elle est conservée. Merci @wanghaa de m'avoir fait prendre conscience du problème.


    public static void main(String[] args) {
        int i = 1;
        int j = 1;
        int ret = i > j ? 1 : -1;
        System.out.println(ret);
    }

    Le code ci-dessus affichera -1. Si les deux valeurs comparées sont égales, 0 doit être renvoyé. Renvoyer -1 est définitivement faux, la situation d'égalité doit donc être traitée séparément.

    répondre
    0
  • 黄舟

    黄舟2017-05-27 17:42:39

    Il faut juger qu'il est égal à 0

    répondre
    0
  • 世界只因有你

    世界只因有你2017-05-27 17:42:39

    Après la discussion de @gemoji, je comprends enfin. Pour résumer :
    Dans les versions antérieures à JDK7, tout comme ce qui est dit dans Effective Java, Comparator n'est pas obligatoire pour implémenter les égaux
    Dans les versions postérieures à JDK7, TimSort est utilisé pour le tri. . L'algorithme, résultant en Comparator doit implémenter égal à.



    <<Version chinoise Java efficace>> Il contient une explication détaillée. En fait, il s'agit d'une forte suggestion qui détruit en fait la transitivité
    et la symétrie des égaux et de la comparaison

    .

    répondre
    0
  • Annulerrépondre