-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 yanu writes: > Dear All, > > saya punya persoalan yg sama dengan : > http://forum.java.sun.com/thread.jspa?threadID=716459&tstart=0 > > ada reply pada soalan itu, namun saya kurang paham :( > mungkin rekan ada yg bisa share beberapa contoh sederhana ?!
Halo, Reply yang paling sederhana mpada URL yang ANda sebutkan adalah prometheuzz, sedangkan yang paling elegan adalah dari dwg. Yang paling mudah dimengerti (jawaban prometheuzz) kalau dalam kode adalah seperti ini, ini menggunakan bubble sort biasa. Saya jelaskan kode dwg di bawahnya. class X { public static void main(String argv[]){ double abc[][] = { {1, 0.4} , {2, 0.6}, {3, 0.1}, {4, 0.9} }; //sort (bubble sort) for (int i = 0; i<abc.length; i++){ for (int j = i+1; j<abc.length; j++){ if (abc[i][1]>abc[j][1]) { double [] tmp = abc[i]; abc[i] = abc[j]; abc[j] = tmp; } } } //print for (int i = 0; i<abc.length; i++){ System.out.println(abc[i][0]+" "+abc[i][1]); } } } Kode dwg adalah sebagai berikut: import java.util.Arrays; import java.util.Comparator; public class ArraySortTest { @SuppressWarnings("unchecked") public static void main(String[] args) { double[][] array = new double[][] {{1, 0.4}, {2, 0.6}, {3, 0.1}, {4, 0.9}}; Arrays.sort(array, new Comparator() { public int compare(Object o1, Object o2) { double[] a1 = (double[])o1; double[] a2 = (double[])o2; return Double.compare(a1[1], a2[1]); } }); for (double[] a : array) System.out.println(a[0] + ":" + a[1]); } } Kunci dalam kode ini adalah pembuatan comparator. Interface Comparator digunakan oleh method Array.sort untuk mengurutkan suatu array of object. Misalnya Anda punya kelas Mahasiswa spt ini: class Mahasiswa { public String NIM; public String Nama; public Mahasiswa(String aNim, String aNama) { NIM = aNim; Nama = aNama; } }; Dan memiliki array mahasiswa: Mahasiswa [] mhs = { new Mahasiswa("223", "Joe"), new Mahasiswa("134", "Yohanes"), }; Anda bisa membuat kelas komparator seperti ini: class ComparatorMahasiswa implements java.util.Comparator { public int compare(Object a, Object b) { Mahasiswa ma = (Mahasiswa)a; Mahasiswa mb = (Mahasiswa)b; return ma.NIM.compareTo(mb.NIM); } }; Dan Anda bisa mengurutkan array, seperti ini: java.util.Arrays.sort(mhs, new ComparatorMahasiswa()); Dengan anonymous class, Anda bisa mempersingkat pembuatan kelas Comparator, tanpa nama: java.util.Arrays.sort(mhs, new java.util.Comparator() { public int compare(Object a, Object b) { Mahasiswa ma = (Mahasiswa)a; Mahasiswa mb = (Mahasiswa)b; return ma.NIM.compareTo(mb.NIM); } }); Hal yang sama dilakukan oleh dwg, implementasi compare pada komparator yang dipakai adalah seperti ini: public int compare(Object o1, Object o2) { double[] a1 = (double[])o1; double[] a2 = (double[])o2; return Double.compare(a1[1], a2[1]); } Karena parameter Object a1 dan a2 tidak bisa dibandingkan langsung, maka perlu dicast menjadi tipe yang sesuai (dalam kasus saya, saya memakai kelas Mahasiswa, jadi dicast jadi mahasiswa). Setelah casting, perbandingan yang diperlukan dilakukan, dalam kasus saya, NIM a dibandingkan dengan b, dalam kasus Anda, elemen kedua yang dibandingkan, (karena index dimulai dari 0, maka dipakai a1[1]). - -- Salam Yohanes http://www.compactbyte.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/> iD8DBQFGI5DL8hFl6FQ7L8IRAmWBAKC9SLH2eT60TJCincIotXdMCG6NhQCfYW9u L1p4SUVUYvdYCvJaXaxxNgo= =gxoi -----END PGP SIGNATURE----- -- Berhenti langganan: [EMAIL PROTECTED] Arsip dan info: http://linux.or.id/milis