Jumat, 30 Desember 2011

CLASS COLLECTION DAN CLASS ARRAY

Class Collection berisi method - method utility yang sering digunakan, seperti untuk melakukan sorting, melakukan pencarian, mengacak isi List, membalik susunan List, mengcopy potongan List, mengisi List dengan pola tertentu, dll.

Method sort digunakan untuk mengurutkan list berdasarkan logika yang ada pada method Comparable. Item didalam List harus mengimplementasikan interface Comparable, kalau tidak maka gunakan method sort dengan 2 parameter yaitu List dan Object dari class yang mengimplementasikan interface Comparator.

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class SortListTest{
             public static void main(){
                         List<Customer> customers = new ArrayList<Customer>();
                         Customer c1 = new Customer();
                         c1.setId(10l);
                         customers.add(c1);
                         Customer c2 = new Customer();
                         c2.setId(2l);
                         customers.add(c2);
                         Customer c3 = new Customer();
                         c3.setId(5l);
                         customers.add(c3);
                      
                         System.out.println("Isi dari List sebelum disorting");
                         for(int i=0; i < customers.size(); i++){
                                       Customer current = customers.get(i);
                                       System.out.println("index ke : " + current.getId());
                         }
                      
                         Collections.sort(customers);
                         System.out.println("Isi dari List setelah disorting");
                         for(int i=0; i < customers.size(); i++){
                                        Customer current = customers.get(i);
                                        System.out.println("index ke : " +current.getId());
                         }
             }
}

Isi dari List sebelum disorting
index ke : 10
index ke : 2
index ke : 5
Isi dari List setelah disorting
index ke : 2
index ke : 5
index ke : 10

kalau class Customer tidak mengimplementasikan interface Comparable, dapat dibuat class customerComparator yang mengimplementasikan interaface Comparator, dan menggunakan method sort yang 2 parameter list of customer dan instace dari customerComparator.

Collection.sort(customers, new customerComparator);

import java.util.Comparator;
public class customerComparator implements Comparator<Customer>{
                 public int compare(Customer c1, Customer c2){
                            return c1.getId().compareTo(c2.getId());
                 }

}

method binarySearch digunakan untuk melakukan pencarian isi List lebih cepat ketimbang menggunakan method indexOf dari interface List. Method binarySearch baru bisa dipanggil kalau isi List telah disorting terlebih dahulu. Method binarySearch menggunakan 2 parameter kalau object dalam list mengimplementasikan interface Comparable. List dan item yang ingin dicari.

public class BinarySearchTest{
            public static void main(String[] args){
                       List<Customer> customers = new ArrayList<Customer>();
                       Customer c1 = new Customer();
                       c1.setId(10l);
                       customers.add(c1);
                       Customer c2 = new Customer();
                       c2.setId(2l);
                       customers.add(c2);
                       Customer c3 = new Customer();
                       c3.setId(5l);
                       customers.add(c3);
                       Collections.sort(customers);
                       int index = Collections.binarySearch(customers, c3);
                       System.out.println("Customer dengan id : " + c3.getId() + " ditemukan diindex ke : " + index);
            }
}

Kalau class Customer tidak mengimplementasikan interaface Comparable, buat class baru customerComparator implementasi dari interaface Comparator. method binarySearch menjadi 3 parameter : list of customers, yang ingin dicari, intansi dari class CustomerCompartor

int index = Collections.binarySearch(customers, c3, new CustomerComparator());

Customer dengan id : 5 ditemukan diindex ke : 1

Untuk mengacak isi dari List ada method shuffle, method shuffle ada dua overload yang pertama hanya satu parameter berupa List, yang kedua menggunakan dua parameter berupa List dan object dari class Random, object random digunakan untuk menentukan jenis randomisasi yang ingin digunakan untuk mengacak list.

Method reverse digunakan untuk membalik isi List, yang di depan menjadi dibelakang dan sebalikya. Semakin banyak dari isi List waktu eksekusinya membesar secara linier.

Method copy digunakan untuk mengcopy isi dari List ke List yang lain, method ini dapat menghemat beberapa baris coding ketimbang mengcopy list secara manual menggunakan perulangan.

Method fill digunakan untuk mengganti isi dari sebuah List dengan sebuah object yang sama. Parameter dari method fill ada dua : List dan object item yang akan digunakan untuk menimpa semua isi dari List.

Method min dan max digunakan untuk mendapat nilai minimum dan maximum dari List. Method ini menyarankan isi dari list mengimplementasikan interface Comparable, jika tidak menambah instance dari class yang mengimplementasikan interaface Comparator kedalam method min dan max.

Method unmodifiable ada beberapa jenis: unmodifiableList, unmodifiableMap, unmodifiableSet, unmodifiableCollection digunakan untuk melindungi collection agar tidak dapat di modifikasi, collection akan bersifat read only, sehingga tidak bisa dimodifikasi dari luar class, contoh class Customer mempunyai property email yang bertipe List of  String.

public class Customer {

Tidak ada komentar:

Posting Komentar