Rumah >Java >javaTutorial >Bagaimanakah kaedah Arrays.sort() dalam Java menyusun tatasusunan mengikut pembanding tersuai?

Bagaimanakah kaedah Arrays.sort() dalam Java menyusun tatasusunan mengikut pembanding tersuai?

王林
王林asal
2023-11-18 11:36:57980semak imbas

Bagaimanakah kaedah Arrays.sort() dalam Java menyusun tatasusunan mengikut pembanding tersuai?

Bagaimanakah kaedah Arrays.sort() dalam Java mengisih tatasusunan mengikut pembanding tersuai?

Di Java, kaedah Arrays.sort() ialah kaedah yang sangat berguna untuk mengisih tatasusunan. Secara lalai, kaedah ini disusun mengikut tertib menaik. Tetapi kadangkala, kita perlu mengisih tatasusunan mengikut peraturan yang ditentukan sendiri. Pada masa ini, anda perlu menggunakan pembanding tersuai (Comparator).

Pembanding tersuai ialah kelas yang melaksanakan antara muka Pembanding, yang boleh menentukan peraturan perbandingan mengikut keperluan khusus. Pembanding tersuai boleh mengisih objek dalam apa jua jenis, termasuk jenis asas dan jenis tersuai.

Seterusnya, saya akan memperkenalkan cara menggunakan pembanding tersuai untuk mengisih kaedah Arrays.sort() dalam Java dan menyediakan beberapa kod sampel untuk menggambarkan.

  1. Bagaimana untuk menentukan pembanding tersuai?

Untuk menentukan pembanding tersuai, anda hanya perlu melaksanakan antara muka Pembanding dan mengatasi kaedah bandingkan. Kaedah perbandingan mempunyai dua parameter. Kita perlu mentakrifkan peraturan perbandingan dalam kaedah ini obj1 > obj2, mengembalikan integer positif

  • Kod kunci adalah seperti berikut:
  • public class MyComparator implements Comparator<T> {
        @Override
        public int compare(T o1, T o2) {
            // 你的自定义比较规则
            return 0;
        } 
    }
  • Bagaimana untuk menggunakan pembanding tersuai untuk mengisih tatasusunan?
Kaedah Arrays.sort() mempunyai berbilang versi terlebih muatan, salah satunya menerima pembanding tersuai. Kita boleh menggunakan pembanding yang ditentukan sendiri sebagai parameter kedua kaedah ini, supaya kita boleh mengisih tatasusunan mengikut peraturan kita sendiri.

Kod kunci adalah seperti berikut:
    public static <T> void sort(T[] a, Comparator<? super T> c) 
  1. Antaranya, T[] a mewakili tatasusunan yang hendak diisih, Comparator

Contoh kod

Sekarang, mari lihat contoh khusus Katakan kita mempunyai kelas Pelajar ini mengandungi dua pembolehubah ahli: nama dan umur. Sekarang, jika kita ingin mengisih tatasusunan Pelajar daripada umur terkecil hingga terbesar, kita perlu menentukan pembanding tersuai. Kod sampel adalah seperti berikut:

public class StudentComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.age - o2.age;
    } 
}

Dalam kod di atas, kami mentakrifkan kelas StudentComparator, yang melaksanakan antara muka Comparator Dalam kaedah perbandingan, kami memfokuskan perbandingan pada umur. Jika umur o1 kurang daripada umur o2, integer negatif dikembalikan; jika umur o1 sama dengan umur o2, 0 dikembalikan;
  1. Seterusnya, kita boleh menggunakan kaedah Arrays.sort() untuk mengisih tatasusunan Pelajar mengikut peraturan yang kita tentukan.
  2. public class Main {
        public static void main(String[] args) {
            Student[] students = new Student[3];
            students[0] = new Student("Tom", 20);
            students[1] = new Student("Jack", 18);
            students[2] = new Student("Lucy", 22);
            
            Arrays.sort(students, new StudentComparator());
            
            for (Student student : students) {
                System.out.println(student.name + " " + student.age);
            }
        }
    }
Hasil keluarannya ialah:

Jack 18
Tom 20
Lucy 22

Dapat dilihat daripada hasil bahawa mengikut peraturan yang kami takrifkan, tatasusunan Pelajar disusun dari kecil ke besar mengikut umur.

Ringkasan

Kaedah Arrays.sort() ialah kaedah yang sangat berguna yang boleh mengisih sebarang jenis tatasusunan. Apabila anda perlu mengisih tatasusunan mengikut peraturan yang anda tentukan sendiri, anda hanya perlu melaksanakan antara muka Pembanding dan menulis semula kaedah bandingkan. Proses pelaksanaan khusus adalah seperti yang dinyatakan di atas, saya harap ia akan membantu semua orang.

Atas ialah kandungan terperinci Bagaimanakah kaedah Arrays.sort() dalam Java menyusun tatasusunan mengikut pembanding tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn