Rumah  >  Soal Jawab  >  teks badan

Manual Pembangunan Java Alibaba——Pembanding

Gambar di atas adalah penerangan dalam "Manual Pembangunan Java Alibaba v1.2.0". Berikut adalah contoh balas, mengatakan bahawa keadaan kesamarataan tidak dikendalikan, tetapi saya fikir:

o1.getId() > o2.getId()

Bukankah sebaliknya

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

Saya biasanya menggunakannya seperti ini. Bolehkah anda membantu saya menerangkan teknik tempat ini? apa sebabnya?

PHPzPHPz2702 hari yang lalu951

membalas semua(3)saya akan balas

  • 给我你的怀抱

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

    Selepas memahami lebih lanjut, punca masalah ialah pelaksanaan pengisihan JDK7 telah ditukar kepada TimSort Lihat artikel ini untuk mendapatkan butiran.
    http://blog.2baxb.me/archives...

    Semasa saya mula-mula menjawab, saya tidak faham sepenuhnya niat penulis bertanya soalan itu, jadi saya menjawab agak tergesa-gesa, jadi saya memohon maaf untuk itu.
    Baris pemisah adalah isi jawapan sebelum ini, kerana ada perbincangan dengan @wanghaa pada jawapan lama dalam komen jawapan, jadi saya menyimpannya Terima kasih @wanghaa kerana menyedarkan saya tentang masalah itu.


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

    Kod di atas akan mengeluarkan -1 Jika dua nilai yang dibandingkan adalah sama, 0 harus dikembalikan -1 pasti salah, jadi situasi yang sama mesti dikendalikan secara berasingan.

    balas
    0
  • 黄舟

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

    Ia harus dinilai apabila ia sama dengan 0

    balas
    0
  • 世界只因有你

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

    Selepas perbincangan @gemoji, akhirnya saya faham:
    Dalam versi sebelum JDK7, sama seperti yang dikatakan dalam Java Efektif, Comparator tidak wajib untuk melaksanakan equals
    Dalam versi selepas JDK7, TimSort digunakan untuk pengisihan. . Algoritma, menyebabkan Comparator mesti melaksanakan sama dengan.



    .

    balas
    0
  • Batalbalas