Thursday, January 24, 2013

Array dan Collections



Java menyediakan library API untuk mengelola sekelompok item data, yaitu melalui Array dan Collections.Tujuannya ialah untuk memudahkan proses pengelolaan dan pengaksesan data tersebut untuk keperluan program.
                       

Array: mekanisme paling dasar.

Collection tingkat lanjut: list, set, map, vector, hashmap, hashtable.




ARRAY

Merupakan objek yang menyimpan sejumlah nilai dengan tipe tunggal yang jumlah atau panjangnya (nilai tersebut) bersifat tetap.  Ukuran atau panjang dari array ini ditentukan pada saat dibuat , dan bersifat tetap.
int[] iArray;
//  mengalokasikan variabel array untuk 4 buah bilangan bulat
iArray = new int[4];
// inisialisasi elemen ke-1
 iArray[0] = 100;
// inisialisasi elemen ke-2
 iArray[1] = 200;
iArray[2] = 300;
iArray[3] = 400;

System.out.println("Elemen index 0: " + iArray[0]); System.out.println("Elemen index 1: " + iArray[1]); System.out.println("Elemen index 2: " + iArray[2]); System.out.println("Elemen index 3: " + iArray[3]); 
 


LIST
Collection yang urut, biasa juga disebut Sequence. User bisa mengatur di di bagian mana, sebuah elemen bisa diselipkan. User juga mengakses elemen melalui indexnya, dan juga mencari elemen2 di dalam list tersebut.
List merupakan Interface. Untuk itu ia harus diimplementasikan, antara lain sebagai vector, arraylist, linkedlist, AbstractList.
Nilai List bisa didapatkan dengan interface Iterator.  Anda perhatikan pada contoh sesudah ini, baik ArrayList maupun LinkedList diakses melalui penggunaan Iterator.

ITERATOR
Interface untuk mengakses Collection.
Method:
hasNext() -> true atau false, untuk mengecek elemen berikutnya
Next() -> isi elemen berikutnya.

ListIterator
• ListIterator adalah subinterface dari Iterator.
• Dengan menggunakan ListIterator pada List, maka elemen dapat diambil secara backward.
• Gunakan method next atau previous sebagai navigasi

VECTOR
An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the list.
// vector digunakan apabila anda ingin menyimpan data object
// secara dinamis pengganti array
Vector newVector = new Vector();
//menambahkan data vector
newVector.add("Ini Data object string, untuk Index awal vector");
newVector.add("ini data object string ke dua");
newVector.add("ini data object String ke tiga dan terakhir");

// menampilkan data vector pertama
System.out.println("Data Vector Pertama : "+newVector.get(0));
System.out.println("Data Vector Pertama : "+newVector.firstElement());
// menampilkan data vector ketiga
System.out.println("Data Vector Ketiga : "+newVector.elementAt(2));
System.out.println("Data Vector Ketiga : "+newVector.lastElement());

//mencari index vector dan ditampilkan
int idxCari = newVector.indexOf("ini data object string ke dua");
System.out.println("nilai Index cari adalah : "+idxCari);
if (idxCari>=0)
System.out.println("Data yang dicari adalah : "+newVector.get(idxCari));

//menampilkan vector dengan perulangan dan size
for (int i=0; i < newVector.size();i++)
System.out.println(i+":"+newVector.get(i));
//menampilkan vector dengan iterator "for-loop"
for (Iterator d = newVector.iterator(); d.hasNext(); ) {
System.out.println("->"+d.next());
}
//menampilkan vector dengan iterator "while-loop"
Iterator ulang=newVector.iterator();
while (ulang.hasNext())
System.out.println("*"+(String)ulang.next());

ARRAYLIST
Adding values might be slow When you don’t know the amount of values the array will contain when you create it, a lot of shifting is going to be done in the memory space when the ArrayList manipulates its internal array. Slow manipulation When you’ll want to add a value randomly inside the array, between two already existing values, the array will have to start moving all the values one spot to the right in order to let that happen.
  get(index)
-add(object);
- remove(index);
- removeAll(coll);
// List Example implement with ArrayList

List<String> ls=new ArrayList<String>();
ls.add(“satu");
ls.add(“dua");
ls.add(“tiga");
ls.add("four");
Iterator it=ls.iterator();
 while(it.hasNext()) { String value=(String)it.next();
 System.out.println("Value :"+value); }

LINKEDLIST
An ordered collection (sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the list.
1.Memberikan performance yang lebih baik untuk method add dan remove dibandingkan ArrayList.
2. Memberikan performance yang lebih jelek untuk method get dan set dibandingkan ArrayList. (No Random Acces), karena melakukannya secara iteratif dengan melakukan scan setiap node.
-          No Random Access. Terdapat get()
-          Fast Manipulation

HASHTABLE
implements a hashtable, which maps keys to values. Any non-null object can be used as a key or as a value.  Hashtables are an extremely useful mechanism for storing data. Hashtables work by mapping a key to a value, which is stored in an in-memory data structure. Rather than searching through all elements of the hashtable for a matching key, a hashing function analyses a key, and returns an index number. This index matches a stored value, and the data is then accessed.
Contoh:
Hashtable angka = new Hashtable();
 angka.put(“satu", new Integer(1));
 angka.put(“dua", new Integer(2));
 angka.put(“tiga", new Integer(3));
   
        //To retrieve a number, use the following code:
        Integer n = (Integer)angka.get(“dua");
        if (n != null) {
            System.out.println("two = " + n);
        }

HASHMAP
implements a hashtable, which maps keys to values. Any non-null object can be used as a key or as a value.
• Menyimpan elemen dengan key unik.
• Satu key untuk satu elemen.
• Key disimpan dalam bentuk object.
• Map tidak bisa menyimpan duplicate key.
• Map bisa menyimpan duplicate element.

HashMap<String, String> hst = new HashMap<String, String>();
hst.put("satu","Amir");
hst.put("dua","Amran");
hst.put("tiga","Irsyad");
hst.put("empat","Dodi");
hst.put("lima","Kali");
System.out.println("HashMap: " + hst);
System.out.println(hst.size());
System.out.println(hst.get("tiga"));

 

No comments: