Artikel ini menjelaskan dua metode implementasi untuk penyortiran kustom Java untuk ArrayList. Bagikan untuk referensi Anda, sebagai berikut:
Menerapkan penyortiran kustom daftar di Java terutama menggunakan dua cara
1) Biarkan kelas objek yang perlu diurutkan mengimplementasikan antarmuka yang sebanding, mengganti metode compareTo (ke), dan menentukan aturan penyortiran di dalamnya. Maka Anda dapat secara langsung menelepon collections.sort () untuk mengurutkan array objek
siswa kelas publik mengimplementasikan {private int id; usia int pribadi; Tinggi int pribadi; nama string pribadi; Siswa Publik (ID int, nama string, usia int, tinggi int) {this.id = id; this.name = name; this.age = usia; this.height = tinggi; } public int getId () {return id; } public int getage () {usia kembali; } public int getHeight () {return height; } public string getName () {return name; } public void setid (int id) {this.id = id; } public void setage (int usia) {this.age = usia; } public void setName (name string) {this.name = name; } public void setHeight (int tinggi) {this.height = tinggi; } @Override public int compareto (objek o) {student s = (siswa) o; if (this.age> s.age) {return 1; } lain jika (this.age <s.age) {return -1; } else {if (this.height> = s.height) {return 1; } else {return -1; }}}}Kelas Tes:
Impor java.util.*; tes kelas publik {public static void printData (daftar <spulh> list) {for (Student Student: List) {System.out.println ("Nomor Siswa:" + Student.getId () + "Nama:" + Student.getname () + "Usia" + Student.getage () + "highmeid:") Student.getname () + "usia" + student.getage () + "height:") Student.getname () + "Age" + Student.getage () + "height:") Student.get.) }} public static void main (string [] args) {list <shuent> list = new ArrayList <> (); list.add (siswa baru (1, "a", 20, 180)); list.add (siswa baru (2, "b", 21, 175)); list.add (siswa baru (3, "c", 22, 190)); list.add (siswa baru (4, "D", 21, 170)); list.add (siswa baru (5, "e", 20, 185)); System.out.println ("Sebelum diurutkan"); printData (daftar); Collections.sort (daftar); System.out.println ("Setelah usia dan tinggi diurutkan"); printData (daftar); }}hasil:
Sebelum diurutkan Nomor Siswa: 1 Nama: A Usia 20 Tinggi: 180 Nomor Siswa: 2 Nama: b Usia 21 Tinggi: 175 Nomor Siswa: 3 Nama: C Usia 22 Tinggi: 190 Nomor Siswa: 4 Nama: D Usia 21 Tinggi: 170 Nomor Siswa: 5 Nama: E Usia 20 Tinggi: 185 Usia dan Tinggi Siswa Nomor: 1 Nama: A Umur 20 Tinggi: 180 Nomor Siswa: 5 Nama: E Usia dan Tinggi Siswa 20 NAMA: 1 Nama: A Umur 20 Tinggi: 180 Nomor Siswa: 5 Nama: E Usia Nama: B Usia 21 Tinggi: 175 Siswa Nomor: 3 Nama: C Usia 22 Tinggi: 190
2) Menerapkan pembanding antarmuka pembanding, menulis ulang metode perbandingan, dan meneruskannya ke dalam mengurutkan sebagai parameter
siswa kelas publik {private int id; usia int pribadi; Tinggi int pribadi; nama string pribadi; Siswa Publik (ID int, nama string, usia int, tinggi int) {this.id = id; this.name = name; this.age = usia; this.height = tinggi; } public int getId () {return id; } public int getage () {usia kembali; } public int getHeight () {return height; } public string getName () {return name; } public void setid (int id) {this.id = id; } public void setage (int usia) {this.age = usia; } public void setName (name string) {this.name = name; } public void setHeight (int tinggi) {this.height = tinggi; }}Kelas Tes:
Impor java.util.*; tes kelas publik {public static void printData (daftar <spulh> list) {for (Student Student: List) {System.out.println ("Nomor Siswa:" + Student.getId () + "Nama:" + Student.getname () + "Usia" + Student.getage () + "highmeid:") Student.getname () + "usia" + student.getage () + "height:") Student.getname () + "Age" + Student.getage () + "height:") Student.get.) }} public static void main (string [] args) {list <shuent> list = new ArrayList <> (); list.add (siswa baru (1, "a", 20, 180)); list.add (siswa baru (2, "b", 21, 175)); list.add (siswa baru (3, "c", 22, 190)); list.add (siswa baru (4, "D", 21, 170)); list.add (siswa baru (5, "e", 20, 185)); System.out.println ("Sebelum diurutkan"); printData (daftar); Collections.sort (daftar, pembanding baru <spuelt> () {@Override public int Compare (Student O1, Student O2) {if (o1.getage ()> = o2.getage ()) {return 1;} else {return -1;}}}); System.out.println ("Setelah usia diurutkan"); printData (daftar); Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if(o1.getAge() > o2.getAge()) { return 1; } else if (o1.getAge() < o2.getAge()){ return -1; } else { if (o1.getHeight() >= o2.getHeight()) { return 1; } else {return -1;}}}}}); System.out.println ("Setelah usia dan tinggi diurutkan"); printData (daftar); }}Hasil output:
before sorted student number:1 Name: A Age 20 Height: 180 Student number: 2 Name: B Age 21 Height: 175 Student number: 3 Name: C Age 22 Height: 190 Student number: 4 Name: D Age 21 Height: 170 Student number: 5 Name: E Age 20 Height: 185 After age sorted student number: 1 Name: A Age 20 Height: 180 Student number: 5 Name: E Age 20 Height: 185 Student number: 2 Name: B Age 21 Height: 175 Student number: 4 Name: D Umur 21 Tinggi: 170 Nomor Siswa: 3 Nama: C Usia 22 Tinggi: 190 Setelah Usia dan Tinggi Sortir Siswa Nomor: 1 Nama: A Usia 20 Tinggi: 180 Nomor Siswa: 5 Nama: E Usia 20 Tinggi: 185 Nomor Siswa: 4 Nama: D Usia 21 Tinggi: 170 Nomor Siswa: B Nama: B Usia 21 Tinggi: 175 Nomor Siswa: 3 Nama: C Usia 22 Tinggi: 190
Dari contoh di atas, kita dapat melihat bahwa penyortiran stabil. Saya melihat kode sumber Collections.sort java. Ini memang diimplementasikan berdasarkan penyortiran dan penyortiran gabungan yang stabil. Itu juga telah dioptimalkan secara internal, disebut Timsort. (Untuk Timsort, silakan merujuk ke https://baike.baidu.com/item/timsort?fr=aladdin)
PS: Ini adalah alat demonstrasi untuk referensi Anda:
Demonstrasi Animasi Online Sisipkan/Pilih/Bubble/Gabungan/Hill/Algoritma Proses Algoritma Penyortiran Cepat:
http://tools.vevb.com/aideddesign/paixu_ys
Untuk informasi lebih lanjut tentang algoritma java, pembaca yang tertarik dengan situs ini dapat melihat topik: "struktur data java dan tutorial algoritma", "ringkasan tips node dom java", "ringkasan file operasi java dan direktori" dan "ringkasan tip operasi java cache" tips java "tips java" Tips "Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.