Breaking

Minggu, 15 Januari 2017

Sorting pada Kelas Collections

Sorting pada Kelas Collections
Bismillah...

Pada saat menambahkan data kedalam Array List terkadang kita ingin mengurutkan data tersebut untuk beberapa keperluan seperti agar data mudah untuk dibaca atau untuk keperluan lainnya. Untuk pengurutan data pada Array List ini kita bisa memanfaatkan sebuah method static dengan nama sort() dari kelas Collections.

Method sort() pada kelas Collections memiliki dua buah model. Model pertama dengan satu buah parameter dan yang kedua dengan dua buah parameter. Untuk lebih jelasnya lihat penjelasan dari masing-masing method tersebut berikut ini :
Collections.sort(List list);
Collections.sort(List list, Comparator c);
Perjelasan Parameter :
  • list - the list to be sorted
    Adalah list yang akan dilakukan pengurutan (sorting)
  • c - the comparator to determine the order of the list. A null value indicates that the elements' natural ordering should be used.
    Variabel yang digunakan sebagai komparator untuk pengurutan list. Jika berisi nilai null, maka elemen tersebut akan di urutkan secara natural.
Berikut adalah contoh dari penggunaan masing-masing method diatas dimulai dari method sort() dengan satu buah parameter.

  1. Sorting List dengan 1 buah parameter
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    public class Sorting1 {
    private List nama = new ArrayList<>();

    public void inisial(){// method ini digunakan untuk melakukan inisialisasi/pemberian nilai pada variabel nama
    nama.add("Fauzan Alfaris");
    nama.add("Andi Sujadi");
    nama.add("Farihana");
    nama.add("Ferdi Ali");
    nama.add("Ahmad Sumardi");
    nama.add("Rina Mariana");
    nama.add("Zulfikar");
    }

    public void print(){// method print digunakan untuk menampilkan hasil dari program yang dibuat
    System.out.println("Nama Sebelum dilakukan Sorting :");
    for(String name:nama)
    System.out.println(name);

    System.out.println("=========================");
    System.out.println("Nama Setelah dilakukan Sorting :");
    Collections.sort(nama);// method sort dengan 1 buah parameter yang digunakan untuk pengurutan data
    for(String name:nama)
    System.out.println(name);
    }

    public static void main(String[]args){
    Sorting1 sort1 = new Sorting1();
    sort1.inisial();
    sort1.print();
    }
    }

    Pada saat dijalankan, hasil dari kode program diatas adalah seperti berikut ini :
    hasil sorting dengan 1 parameter


  2. Sorting List dengan 2 buah parameter
    Dengan menggunakan method sort() dengan dua parameter memungkinkan kita untuk memilih variabel mana yang akan kita jadikan sebagai komparatornya. Untuk mempermudah, pada contoh ini kita akan mencoba membuat sebuah kelas yang memuat identitas mahasiswa yang terdiri dari nim, nama, jurusan dan fakultas. Kemudian kita akan menggunakan masing-masing variabel dari kelas Mahasiswa tersebut secara bergantian untuk dilakukan proses pengurutan berdasarkan variabel nim hingga variabel fakultas. Pengurutan dengan menggunakan dua buah parameter ini juga memungkinkan kita untuk mengurutkan data secara menaik (ascending) atau menurun (descending).

    Untuk mengimplementasikan penggunaan method sort() dengan dua buah parameter ini, terlebih dahulu kita buat sebuah kelas dengan nama Mahasiswa.java. Pada kelas ini berisi informasi mengenai nim, nama, jurusan dan fakultas mahasiswa bersangkutan.
    public class Mahasiswa {
    private String nim;
    private String nama;
    private String jurusan;
    private String fakultas;

    public Mahasiswa(String nim, String nama, String jurusan, String fakultas){
    this.nim = nim;
    this.nama = nama;
    this.jurusan = jurusan;
    this.fakultas = fakultas;
    }

    public String getNim() {
    return nim;
    }

    public void setNim(String nim) {
    this.nim = nim;
    }

    public String getNama() {
    return nama;
    }

    public void setNama(String nama) {
    this.nama = nama;
    }

    public String getJurusan() {
    return jurusan;
    }

    public void setJurusan(String jurusan) {
    this.jurusan = jurusan;
    }

    public String getFakultas() {
    return fakultas;
    }

    public void setFakultas(String fakultas) {
    this.fakultas = fakultas;
    }
    }

    Setelah selesai membuat kelas diatas, selanjutnya kita akan menggunakan method sort() dengan dua parameter tersebut.
    Berikut adalah contoh programnya.
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;

    public class Sorting2 {
    private final List list_mhs = new ArrayList<>();

    public void inisial(){// method ini digunakan untuk melakukan inisialisasi/pemberian nilai pada variabel list_mhs
    list_mhs.add(new Mahasiswa("1102","Fauzan Alfaris","Teknik Elektro\t\t", "Teknik"));// penambahan data mahasiswa dengan memanfaatkan constructur pada kelas Mahasiswa.java
    list_mhs.add(new Mahasiswa("1101","Andi Sujadi","Teknik Informatika\t", "Teknik"));
    list_mhs.add(new Mahasiswa("1105","Farihana","Bahasa Indonesia\t", "Bahasa dan Sastra"));
    list_mhs.add(new Mahasiswa("1103","Ferdi Ali","Teknologi Hasil Perikanan", "Kelautan dan Perikanan"));
    list_mhs.add(new Mahasiswa("1107","Ahmad Sumardi","Administrasi Negara\t", "Sosial dan Ilmu Politik"));
    list_mhs.add(new Mahasiswa("1104","Rina Mariana","Bahasa Inggris\t\t", "Bahasa dan Sastra"));
    list_mhs.add(new Mahasiswa("1106","Zulfikar","Sosiologi\t\t", "Sosial dan Ilmu Politik"));
    }

    public void print(){// method print digunakan untuk menampilkan hasil dari program yang dibuat
    System.out.println("Daftar Mahasiswa Sebelum di Sorting :");
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("===============================================================================");
    System.out.println("Daftar Mahasiswa di Sorting Berdasarkan Nim: \nAscending:");
    sort(list_mhs, 0, true);// pemanggilan method sort berdasarkan nim dengan index 0 dan diurut secara ascending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("-------------------------------------------------------------------------------");
    System.out.println("Descending:");
    sort(list_mhs, 0, false);;// pemanggilan method sort berdasarkan nim dengan index 0 dan diurut secara descending
    for(Mahasiswa mhs:list_mhs){
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());
    }

    System.out.println("===============================================================================");
    System.out.println("Daftar Mahasiswa di Sorting Berdasarkan Nama:\nAscending:");
    sort(list_mhs, 1, true);;// pemanggilan method sort berdasarkan nama dengan index 1 dan diurut secara ascending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("-------------------------------------------------------------------------------");
    System.out.println("Descending:");
    sort(list_mhs, 1, true);// pemanggilan method sort berdasarkan nama dengan index 1 dan diurut secara descending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("===============================================================================");
    System.out.println("Daftar Mahasiswa di Sorting Berdasarkan Jurusan:\nAscending:");
    sort(list_mhs, 2, true);// pemanggilan method sort berdasarkan jurusan dengan index 2 dan diurut secara ascending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("-------------------------------------------------------------------------------");
    System.out.println("Descending:");
    sort(list_mhs, 2, false);// pemanggilan method sort berdasarkan jurusan dengan index 2 dan diurut secara descending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    System.out.println("===============================================================================");
    System.out.println("Daftar Mahasiswa di Sorting Berdasarkan Fakultas:\nAscending:");
    sort(list_mhs, 3, true);// pemanggilan method sort berdasarkan fakultas dengan index 3 dan diurut secara ascending
    for(Mahasiswa mhs:list_mhs){
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());
    }
    System.out.println("-------------------------------------------------------------------------------");
    System.out.println("Descending:");
    sort(list_mhs, 3, false);// pemanggilan method sort berdasarkan fakultas dengan index 3 dan diurut secara descending
    for(Mahasiswa mhs:list_mhs)
    System.out.println(mhs.getNim()+"\t"+mhs.getNama()+"\t"+mhs.getJurusan()+"\t"+mhs.getFakultas());

    }

    public void sort(List list, int idx, boolean asc){
    Collections.sort(list, new Comparator() {// method yang digunakan untuk sorting kelas Collections dengan menggunakan comparator Mahasiswa
    @Override
    public int compare(Mahasiswa mhs1, Mahasiswa mhs2){
    switch(idx){
    case 0:
    if(asc)// jika pengurutan secara ascending
    return mhs1.getNim().compareTo(mhs2.getNim());
    else // jika pengurutan secara descending
    return mhs2.getNim().compareTo(mhs1.getNim());
    case 1:
    if(asc)
    return mhs1.getNama().compareTo(mhs2.getNama());
    else
    return mhs2.getNama().compareTo(mhs1.getNama());
    case 2:
    if(asc)
    return mhs1.getJurusan().compareTo(mhs2.getJurusan());
    else
    return mhs2.getJurusan().compareTo(mhs1.getJurusan());
    case 3:
    if(asc)
    return mhs1.getFakultas().compareTo(mhs2.getFakultas());
    else
    return mhs2.getFakultas().compareTo(mhs1.getFakultas());
    default:
    return -1;
    }
    }
    });
    }

    public static void main(String[]args){
    Sorting2 sort2 = new Sorting2();
    sort2.inisial();
    sort2.print();
    }
    }

    Hasil dari kode program diatas pada saat dijalankan adalah sebagai berikut ini :
    hasil sorting dengan 2 buah parameter

Anda juga bisa mengganti kelas Mahasiswa tersebut dengan kelas-kelas lainnya sesuai dengan yang dibutuhkan pada aplikasi yang anda buat.

Demikianlah tutorial mengenai Sorting pada Kelas Collections ini saya buat. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari web ini, silahkan isi email anda pada isian Follow by Email dibawah.

Terima kasih... wassalam

Tidak ada komentar:

Posting Komentar

close