Metode arrays.sort (t [], pembanding <? Super t> c) digunakan untuk mengurutkan array objek berdasarkan aturan yang ditentukan pengguna.
Dokumentasi Java resmi hanya menjelaskan secara singkat peran metode ini dan tidak memperkenalkannya secara rinci. Artikel ini akan menganalisis metode ini secara mendalam.
1. Contoh sederhana
Penggunaan metode pengurut sangat sederhana dan jelas. Dalam contoh berikut, pertama -tama tentukan pembanding yang membandingkan ukuran anjing, dan kemudian lulus objek instannya sebagai parameter ke metode pengurutan. Melalui contoh ini, Anda harus dapat dengan cepat menguasai penggunaan arrays.sort ().
Impor java.util.arrays; import java.util.comparator; class dog {int size; dog publik (int s) {size = s;}} class dogsizeComparator mengimplementasikan komparator <dog> {@override public int (dog o1, dog o2) {return o1. d1 = new Dog(2);Dog d2 = new Dog(1);Dog d3 = new Dog(3);Dog[] dogArray = {d1, d2, d3};printDogs(dogArray);Arrays.sort(dogArray, new DogSizeComparator());printDogs(dogArray);}public static void printDogs(Dog[] dogs){for (Dog d: dogs) System.out.print (D.Size + ""); System.out.println ();}}Outputnya adalah:
2 1 3 1 2 3
2. Gunakan mode kebijakan
Ini adalah contoh sempurna dan ringkas dari pola strategi. Perlu disebutkan mengapa model strategi cocok untuk digunakan dalam skenario ini.
Secara umum, pola kebijakan memungkinkan algoritma yang berbeda dipilih ketika program dieksekusi. Misalnya, ketika menyortir, pembanding yang berbeda dilewatkan, dan algoritma yang berbeda digunakan.
Menurut contoh di atas, misalkan Anda ingin mengurutkan berdasarkan berat anjing, Anda dapat membuat pembanding baru untuk mengurutkan seperti di bawah ini:
class dog {int size; int berat; anjing publik (int s, int w) {size = s; bobot = w;}} kelas dogsizeComparator mengimplementasikan pembanding <dog> {@override public int perbandingan (dog o1, dog o2) {return o1. o1.weight - o2.weight;}}public class ArraySort {public static void main(String[] args) {Dog d1 = new Dog(2, 50);Dog d2 = new Dog(1, 30);Dog d3 = new Dog(3, 40);Dog[] dogArray = {d1, d2, d3};printDogs(dogArray);Arrays.sort(dogArray, new DogsizeComparator ()); printdogs (dogarray); arrays.sort (dogarray, dogweightcomparator baru ()); printdogs (dogarray);} public static void printdogs (dog [] dog) {for (dog d: dog) System.out.print ("size =" + d.size + "Weight =" Dog d: Dog) "); System.out.println ();}}Hasil Eksekusi:
Ukuran = 2 Berat = 50 Ukuran = 1 Berat = 30 Ukuran = 3 Berat = 40 Ukuran = 1 Berat = 30 Ukuran = 2 Berat = 50 Ukuran = 3 Berat = 40 Ukuran = 1 Berat = 30 Ukuran = 3 Berat = 40 Ukuran = 2 Berat = 50
Pembanding adalah antarmuka, sehingga metode sortir dapat lulus di kelas mana pun yang mengimplementasikan antarmuka ini, yang merupakan gagasan utama dari pola kebijakan.
3. Mengapa menggunakan "super"
Mudah dimengerti jika Anda menggunakan "pembanding <T> C", tetapi <? Supert> dalam parameter kedua jenis berarti bahwa jenis yang diterima oleh pembanding dapat T atau superclass -nya. Mengapa superclass? Jawabannya adalah: Ini memungkinkan perbandingan berbagai objek subkelas menggunakan pembanding yang sama. Ini ditunjukkan dengan jelas dalam contoh berikut:
Impor java.util.arrays; impor java.util.comparator; class hewan {int size;} class dog memperluas hewan {dog publik (int s) {size = s;}} cat cat hewan {public cat (int s) {size = s;} class animal anusaCizator mengimplementasikan komparator public {@override {override@override, override {override@@override, public oimy {@override {everride {everride {everride {everride {everride {everride { o2.size;} // Dengan cara ini, semua sub kelas hewan dapat menggunakan pembanding ini.} Public class arraysort {public static void main (string [] args) {dog d1 = anjing baru (2); anjing d2 = anjing baru (1); anjing d3 = anjing baru (3); anjing [] dogarray = {d1, d2, d3); Animal animalizeComparator ()); printdogs (dogarray); System.out.println (); // Ketika Anda memiliki array kucing, pembanding yang sama dapat digunakan. Cat C1 = Cat baru (2); kucing C2 = kucing baru (1); kucing C3 = Cat baru (3); cat [] CATARRAY = {C1, C2, C3}; printdogs (Catarray); arrays.sort (CATARRAY, Public Static (); printdogs (capray);} public static (); printdogs (caparray);} public station public (); printdogs (catrarray);} public station public state (); pr baik System.out.print ("size =" + a.size + ""); System.out.println ();}}Hasil output:
Ukuran = 2 ukuran = 1 ukuran = 3 ukuran = 1 ukuran = 2 ukuran = 3 ukuran = 3 ukuran = 2 ukuran = 1 ukuran = 3 ukuran = 1 ukuran = 2 ukuran = 3
4. Ringkasan
Informasi yang terkait dengan arrays.sort () dirangkum sebagai berikut:
Umum: Pola Desain Strategi Kelas Super;
Gabungan Jenis: Kompleksitas Waktu N*Log (n);
Java.util.collections#sort (daftar <T> Daftar, pembanding <? Super t> c) menggunakan ide yang sama dengan arrays.sort.
Meringkaskan
Di atas adalah semua penjelasan terperinci dari kode arrays.sort () di Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait Java lainnya di situs web ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!