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

Kirim email ke