Java Academy · Pelajaran

Comparable berbanding Comparator

Pelajari perbezaan antara Comparable dan Comparator untuk pengisihan tersuai. Berlatih menggunakan compareTo dan Comparator luaran.

Pelajaran 2 daripada 38 langkah

Comparable berbanding Comparator ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Pengenalan

Penyusunan memerlukan peraturan. Boleh dibandingkan dan pembanding ialah dua cara untuk menentukannya:

  • Boleh dibandingkan: kelas melaksanakan compareTo.
  • Pembanding: objek berasingan yang dihantar kepada sort().

Konsep boleh dibandingkan

Boleh dibandingkan membolehkan kelas menentukan susunan semula jadinya. Laksanakan compareTo supaya Collections.sort mengetahui cara menyusun item.

Kod: boleh dibandingkan

Di sini Person menyokong perbandingan dan disusun mengikut umur. Ini mentakrifkan susunan semula jadinya.

public class Main {
  static class Person implements Comparable<Person> {
    String name;
    int age;
    Person(String n, int a) { name = n; age = a; }
    public int compareTo(Person o) {
      return this.age - o.age; // order by age
    }
    public String toString() { return name + "(" + age + ")"; }
  }
  public static void main(String[] args) {
    java.util.List<Person> list = new java.util.ArrayList<>();
    list.add(new Person("Ada",30));
    list.add(new Person("Bob",25));
    java.util.Collections.sort(list);
    System.out.println(list); // [Bob(25), Ada(30)]
  }
}

Konsep pembanding

Pembanding adalah luaran. Ia boleh menyusun kelas yang sama dengan cara berbeza, contohnya mengikut nama dan bukannya umur.

Kod: pembanding

Pembanding ini menyusun mengikut nama. Pembanding yang berbeza boleh digunakan semula pada kelas yang sama.

public class Main {
  static class Person {
    String name; int age;
    Person(String n,int a){ name=n; age=a; }
    public String toString(){ return name+"("+age+")"; }
  }
  public static void main(String[] args) {
    java.util.List<Person> list = new java.util.ArrayList<>();
    list.add(new Person("Ada",30));
    list.add(new Person("Bob",25));

    java.util.Comparator<Person> byName = (p1,p2) -> p1.name.compareTo(p2.name);
    java.util.Collections.sort(list, byName);
    System.out.println(list); // [Ada(30), Bob(25)]
  }
}

Kod: pembanding terbalik

Pembanding boleh menentukan apa-apa peraturan, seperti susunan menurun dalam contoh ini.

public class Main {
  public static void main(String[] args) {
    java.util.List<Integer> nums = new java.util.ArrayList<>();
    nums.add(5); nums.add(1); nums.add(3);

    java.util.Comparator<Integer> desc = (a,b) -> b - a;
    java.util.Collections.sort(nums, desc);
    System.out.println(nums); // [5,3,1]
  }
}

Semakan boleh dibandingkan berbanding pembanding

Semakan ringkas: Apakah perbezaan utama antara boleh dibandingkan dengan pembanding?

Ringkasan

Ringkasan: Boleh dibandingkan menentukan susunan semula jadi di dalam kelas. Pembanding adalah berasingan dan boleh menghasilkan banyak strategi penyusunan.

Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Comparable berbanding Comparator” percuma?

Ya — teks penuh “Comparable berbanding Comparator” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Comparable berbanding Comparator”?

Pelajari perbezaan antara Comparable dan Comparator untuk pengisihan tersuai. Berlatih menggunakan compareTo dan Comparator luaran. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.

Berapa lamakah pelajaran “Comparable berbanding Comparator” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Map dan Pengiraan Kekerapan
  2. Comparable berbanding Comparator
  3. Pengisihan/Carian dengan Collections
← Kembali ke Java Academy