-----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