Pembanding adalah antarmuka, yang dapat mengganti dua metode perbandingan () dan sama () untuk fungsi perbandingan harga; Jika nol, ia menggunakan urutan elemen default, seperti a, b, c, d, e, f, g, yaitu, a, b, c, d, e, f, g, tentu saja, hal yang sama berlaku untuk angka.
Bandingkan (a, b) metode: mengembalikan bilangan bulat negatif, nol atau bilangan bulat positif sesuai dengan parameter pertama, yang kurang dari, sama dengan atau lebih besar dari parameter kedua.
Metode Equals (OBJ): Return true hanya jika objek yang ditentukan juga merupakan pembanding dan jenis yang sama dengan pembanding ini dipaksa untuk diimplementasikan.
Parameter kedua collections.sort (daftar, pricecomparator baru ()); Mengembalikan nilai Int-Type, yang setara dengan bendera, memberi tahu metode sortir dalam urutan apa untuk mengurutkan daftar.
Metode kode implementasi spesifik adalah sebagai berikut:
Kelas Entitas Buku:
paket com.tjcyjd.comparator; impor java.text.decimalformat; impor java.text.simpledateFormat; impor java.util.gregoriancalendar; impor java.util.iterator; impor java.util.treemap; / ** * Kelas Entitas Buku * * @author yjd * */ Buku kelas publik mengimplementasikan yang sebanding {// Tentukan buku bernama kelas, yang diwarisi secara default dari kelas objek int int id; // nomor nama string publik; // nama harga ganda publik; // Harga Private String Author; // Penulis Kalender Publik GregorianCalendar; // Tanggal Publikasi Buku Publik () {this (0, "x", 0,0, GregorianCalendar baru (), ""); } buku publik (int id, nama string, harga ganda, kalender gregoriancalendar, string penulis) {this.id = id; this.name = name; this.price = harga; this.calendar = kalender; this.author = penulis; } // Tulis ulang metode yang diwarisi dari objek kelas induk untuk memenuhi persyaratan informasi kelas buku deskripsi public string toString () {string showtr = id + "/t" + nama; // Tentukan string yang menampilkan informasi kelas decimalformat formatPrice = new decimalformat ("0,00"); // harga format ke dua tempat desimal showtr + = "/t" + formatPrice.format (harga); // harga format showtr + = "/t" + penulis; SimpleDateFormat formatDate = new SimpleDateFormat ("yyyy tahun mm bulan dd day"); showtr + = "/t" + formatDate.format (calendar.getTime ()); // Format waktu pengembalian showtr; // mengembalikan string informasi kelas} public int compareto (objek obj) {// metode dalam buku antarmuka yang sebanding b = (buku) obj; kembalikan ini.id - b.id; // Bandingkan ukurannya sesuai dengan ID buku, yang digunakan untuk penyortiran default} public static void main (String [] args) {Buku B1 = Buku Baru (10000, "Dream of the Red Chamber", 150.86, New Gregoriancalendar (2009, 01, 25), "CAO XUEQIN, GAO E"); Buku B2 = Buku Baru (10001, "Romance of the Three Kingdoms", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Buku B3 = Buku Baru (10002, "Margin Air", 100,8, Gregoriancalendar Baru (2009, 6, 28), "Shi Nai'an"); Buku B4 = Buku Baru (10003, "Journey to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Cheng'en"); Buku B5 = Buku Baru (10004, "The Legend of the Condor Heroes", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); Treemap tm = treemap baru (); tmput (b1, bilangan bulat baru (255)); tmput (B2, bilangan bulat baru (122)); tm.put (B3, New Integer (688)); tm.put (b4, bilangan bulat baru (453)); tmput (b5, bilangan bulat baru (40)); Iterator it = tm.keyset (). Iterator (); Kunci objek = null, value = null; BUKU BB = NULL; while (it.hasnext ()) {key = it.next (); bb = (buku) kunci; value = tmget (key); System.out.println (bb.tostring () + "/t Inventory:" + tmget (key)); }}} Pembanding Kustom dan Kelas Uji:
paket com.tjcyjd.comparator; impor java.util.arraylist; impor java.util.collections; impor java.util.comparator; impor java.util.gregoriancalendar; impor java.util.iterator; impor java.util.list; kelas publik usecomparator {public static void main (string args []) {list <Book> list = new ArrayList <Book> (); // Array Sequence Book B1 = Buku Baru (10000, "Dream of Red Mansions", 150,86, Gregoriancalendar baru (2009, 01, 25), "Cao Xueqin, Gao E"); Buku B2 = Buku Baru (10001, "Romance of the Three Kingdoms", 99.68, New Gregoriancalendar (2008, 7, 8), "Luo Guanzhong"); Buku B3 = Buku Baru (10002, "Margin Air", 100,8, Gregoriancalendar Baru (2009, 6, 28), "Shi Nai'an"); Buku B4 = Buku Baru (10003, "Journey to the West", 120.8, New Gregoriancalendar (2011, 6, 8), "Wu Chengen"); Buku B5 = Buku Baru (10004, "Tianlong Baba", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); list.add (b1); list.add (b2); list.add (b3); list.add (b4); list.add (b5); // collections.sort (daftar); // Tidak ada pembanding default, System.out.println ("Elemen dalam urutan array:"); myprint (daftar); Collections.sort (daftar, pricecomparator baru ()); // urutkan berdasarkan harga system.out.println ("Diurutkan berdasarkan harga buku:"); myprint (daftar); Collections.sort (daftar, calendarcomparator baru ()); // urutkan waktu system.out.println ("Diurutkan dengan buku public static void myprint (daftar <Book> list) {iterator it = list.iterator (); // Dapatkan iterator untuk melintasi semua elemen dalam daftar sementara (it.hasnext ()) {// Jika ada elemen di iTerator, itu pengembalian (itu. It.Next ()); // Tunjukkan elemen ini}} // Khusus Kustom: Urutkan berdasarkan harga Buku Statis Pricecomparator mengimplementasikan pembanding {public int perbandingan (objek objek, objek objek2) {// mengimplementasikan metode ini dalam buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (Buku) (BUKU) (BUKU BUKU) (BUKU (BUKU) (BUKU (BUKU) (BUKU (BUKU) (BUKU) (BUKU (BUKU) (BUKU (BUKU) (BUKU; }} // Implementasikan metode dalam Buku Antarmuka P1 = (Buku) Object1; (Buku) Object1; // Casting Book P2 = (Buku) Object2; return p2.calendar.compareto (p1.calendar); }}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.