Anda di halaman 1dari 13

COLLECTION

Pada bab ini akan dibahas tentang C# collection. .NET framework menyediakan class khusus untuk pengambilan dan penyimpanan data. Ada dua jenis collection yang berbeda di C#. Collection standar, yang dapat ditemukan dibawah namespace System.Collection dan collection generik, dibawah system.collection.generic. collection generic lebih flexible dan cara yang lebih diterapkan untuk bekerja dengan data.

ArrayList ArrayList adalah collection dari standard System.Collection namespace. Atau kita bisa menyebut generasi selanjutnya array di C#. Sebuah array yang dinamis. Menyediakan akses acak pada elementnya. Sebuah ArrayList akan otomatis melebar saat data ditambahkan. Tidak seperti array, ArrayList dapat menyimpan data dari beberapa type data. Element dari ArrayList di akses via index integer. alokasi ArrayList dapat dicapai melalui properti TrimToSize. Metode pada ArrayList:

Add: Metode Add ini digunakan untuk menambahkan object ke ArrayList. Element apapun yang kita tambahkan pada ArrayList akan dianggap sebagai sebuah object. Bentuk Umum :
ArrayListObject.Add(element);

Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add("Jaka"); oArrayList.Add("Stephen"); oArrayList.Add(99); oArrayList.Add("@"); oArrayList.Add("55.55"); oArrayList.Add(oStack);

beberapa element yang telah ditambahakan tersebut dianggap sebagai object. Element dapat di duplikasi atau bisa menambahkan null pada ArrayList.

Add Range: Metode Add Range akan menambahkan element dari collection lainnnya. Disini element dapat null, tapi Range collection yang ditambahkan tidak dapat null. Contoh:
Stack oStack = new Stack(); oStack.Push(1); oStack.Push(2); oStack.Push(3); oStack.Push(4);

ArrayList oArrayList = new ArrayList(); oArrayList.Add("Stephen"); oArrayList.Add("Gerrard"); oArrayList.AddRange(oStack);

yang terjadi adalah, ketika kita menambahkan stack, object stack akan dianggap element pada ArrayList. Tapi ketika menggunakan metode AddRange itu akan menyimpan element pada stack satu-persatu menjadi element pada ArrayList. Element akan ditambahkan di akhir ArrayList. Hasil dari contoh diatas : Stephen Gerrard 1 2 3 4

Clear: Metode clear digunakan untuk menghapus/mengosongkan element pada ArrayList.


ArrayListObject.Clear(); ArrayList oArrayList = new ArrayList(); oArrayList.Add("c#"); oArrayList.Add("Java");

oArrayList.Add("PHP");

total element pada ArrayList diatas adalah 3, dan menggunakan metode clear:
oArrayList.Clear();

sekarang total element pada ArrayList adalah 0, namun kapasitas tetap sama seperti saat di set.

Binarysearch: Metode beinarysearch di gunakan untuk mendapatkan lokasi dari object pada ArrayList. Metode ini menggunakan algoritma binary search untuk menemukan element. Metode ini akan mengembalikan posisi element pada ArrayList. Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add(1); oArrayList.Add(3); oArrayList.Add(5); oArrayList.Add(7); int iPos = oArrayList.BinarySearch(3);

akan mengembalika lokasi dari nilai index menjadi variable integer.

Insert: Metode insert digunakan untuk menyisipkan element pada ArrayList yang tersedia. Fitur baru yang lebih specific dari ArrayList jika dibandingkan array. Bentuk Umum:
ArrayListObject.Insert(Position,Object);

Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add(1); oArrayList.Add(3); oArrayList.Add(4);

element akan tersimpan seperti ini: 134 Kita sisip element baru pada posisi 2:
oArrayList.Insert(2,2);

setelah penyisipan, hasilnya akan seperti ini: 1234

InsertRange: metode InsertRange digunakan untuk menyisipkan element collection dari collection yang lain dari posisi index yang lebih specific. Disini akan menyisipkan individual object dari collection object. Bentuk umum:
ArrayListObject.InsertRange(Position,CollectionObject);

Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add(1); oArrayList.Add(5); oArrayList.Add(6);

Output dari ArrayList tersebut: 156 Menyisipkan collection object:


Stack oStack = new Stack(); oStack.Push(2); oStack.Push(3); oStack.Push(4); oArrayList.InsertRange(2,oStack);

Kita telah menyisipkan Range element dari stack, output dari ArrayList tersebut:

123456

Remove: Metode remove digunakan untuk menghapus element dari ArrayList. Jika ada beberapa object yang mempunyai nama sama ketika di remove, maka akan di remove element yang pertama mengalami remove pada ArrayList. Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add("Jaka"); oArrayList.Add("Septian"); oArrayList.Add("Jaka"); oArrayList.Remove("Jaka");

Akan meremove element pertama pada ArrayList.

RemoveAt: Metode RemoveAt digunakan untuk menghapus lokasi yang diinginkan pada element ArrayList. Bentuk umum:
ArrayListObject.RemoveAt(ArrayListIndex);

Contoh:
ArrayList oArrayList = new ArrayList(); oArrayList.Add("Jaka"); oArrayList.Add("Septian"); oArrayList.Add("Jaka"); oArrayList.RemoveAt(1);

Akan meremove element kedua dari ArrayList.

RemoveRange:

Metode RemoveRange digunakan untuk meremove collection object pada ArrayList. Akan meremove Range dari posisi index sampai jumlah element yang diinginkan pada metode RemoveRange . Bentuk umum:
ArrayListObject.RemoveRange(Starting Index, Number of objects);

Contoh:
ArrayList oArrayList = new ArrayList(); For(int i=1;i<10;i++) { oArrayList.Add(i); }

10 element telah ditambahkan sebagai object pada ArrayList. Akan dihapus 3 element dimulai dari index ke 5: Hasilnya akan seperti ini: 1 2 3 4 8 9 10

Sort: Metode sort digunakan untuk mengurutkan object dalam urutan ascending. Menggunakan algoritma QuickSort untuk mengurutkan element pada ArrayList. Contoh:
oArrayList.Add("B"); oArrayList.Add("A"); oArrayList.Add("Z"); oArrayList.Sort();

outputnya akan seperti ini: ABZ

Reverse:

Metode reverse digunakan untuk menyusun object dalam urutan yang berlawanan. Contoh:
oArrayList.Add("A"); oArrayList.Add("B"); oArrayList.Add("C"); oArrayList.Reverse();

sebelum metode reverse ABC Setelah metode reverse CBA

GetEnumerator: Metode GetEnumerator digunakan untuk mendapatkan collection dari object pada ArrayList sebagai iterator. Dapat di implementasikan dengan interface yang lebih cocok. Bagaimanapun element ArrayList dapat di iterasi melalui foreach atau loop statements. Contoh:
oArrayList.Add("B"); oArrayList.Add("A"); oArrayList.Add("Z"); IEnumerator OIEnum = oArrayList.GetEnumerator();

Contains: Metode ini digunakan untuk memeriksa sebuah element apakah ada atau tidak. Akan mengembalikan nilai Boolean sebagai hasil.
OArrayList.Contains("Jaka");

Properti pada ArrayList 1. Capcity : properti ini digunakan untuk mengeset atau mendapatkan ukuran

dari ArrayList. Seperti yang diketahui ukuran penyimpanan akan bertambah sebanyak yang dibutukan. Ukuran default adalah 16. 2. Count 3. IsFixedSize : akan mengembalikan jumlah total dari element ArrayList. : akan mengembalikan apakah ArrayList fixed size atau tidak,

dikembalikan dalam nilai Boolean. 4. IsReadOnly : akan mengembalikan apakah ArrayList read only atau tidak,

dikembalikan dalam nilai Boolean.

Kelebihan dan kekurangan ArrayList: Kelebihan: ArrayList bukan penyimpanan type data yang spesifik, akan menyimpan apapun sebagai object. Tidak dibutukan alokasi dan de-alokasi untuk menyimpan data. Mempunyai metode pengurutan yang jelas. Dapat menyisipkan dan menghapus element di posisi manapun di ArrayList. Menyimpan object sebagai element.

Kekurangan: ArrayList tidak begitu tangguh. Harus melakukan sesuatu dengan type casting ketika anda mengambil data, ketika kita selalu melakukan type casting, akan mempengaruhi performa. Menggunakan menyisipkan pendekatan atau penyimpanan posisi LinkedList, yang karena harus ketika anda

menghapus

specific

melakukan

forward/backward dalam alamat penyimpanan. Kadang-kadang menuntun pada runtime error. Sebagai contoh, ketika kita menyimpanan id dari employee pada ArrayList dan kita ingin mengambil element untuk operasi yang lain. Jelas kita perlu melakuan type casting, pada saat itu jika ada element string apa yang akan terjadi? Pasti akan error.

LinkedList LinkedList membuat penyisipan dan penghapusan dapat berjalan cepat. Mengimplementasikan linked list. Setiap object di alokasikan secara terpisah, beberapa operasi tidak membutuhkan semua collection untuk disalin. Dalam beberapa kasus umum LinkedList menghalangi kinerja. Kelebihan utama LinkedList pada array adalah link menyediakan kita dengan kemampuan untuk menyusun element dengan efisien. Operasi pada LinkedList: Menambah data Program ini menunjukan pemakaia dari type LinkedList. Pertama meminta LinkedList constructor dengan parameter type string. Kemudiam menggunakan instance method AddLast dan AddFirst untuk menambahkan element pada struktur data linked list internal.
using System; using System.Collections.Generic; class Program { static void Main() { // // Membuat instance object LinkedList // LinkedList<string> linked = new LinkedList<string>(); // // menggunakan metode AddLast untuk menambahkan element diakhir. // menggunakan metode AddFirst untuk menambahkan element diawal. // linked.AddLast("cat"); linked.AddLast("dog"); linked.AddLast("man"); linked.AddFirst("first"); // } }

Outputnya seperti ini: First cat dog man

Menemukan dan Menyisipkan Data

Ini adalah contoh pemanggilan pertama metode instance find. Setelah find, kita akan menggunakan penunjuk LinkedListNode variable untuk melakukan penyisipan posisi relatif ke LinkedList.
using System; using System.Collections.Generic; class Program { static void Main() { // // Membuat Linked List baru // LinkedList<string> linked = new LinkedList<string>(); // // Menambah tiga element pada linked list // linked.AddLast("one"); linked.AddLast("two"); linked.AddLast("three"); // // Sisip node sebelum node kedua // LinkedListNode<string> node = linked.Find("one"); linked.AddAfter(node, "inserted"); // } }

Outputnya aka seperti ini: One insert two three Metode find pada LinkedList adalah instace method yang menerima satu parameter. Untuk LinkedList dengan parameter type string, metode ini menerima parameter string. Untuk LinkedList dengan type lain, instance type tersebut di butuhkan. AddBefore dan AddAfter dalam LinkedList menyediakan cara untuk menyisipkan node pada linked list dengan cara yang relative. Untuk menggunakan metode ini kita harus melokasikan terlebih dahulu dengan metode Find node yang lain pada list.

Menghapus Kita dapat menggunakan Remove untuk menghapus element dengan nilai terntentu. Terdapat juga overload yang menerima referensi parameter dari type

LinkedListNode. Pertama kita dapat menggunakan Find untuk menemukan node, dan kemudian menghapusnya dengan Remove. Kita juga dapat menghapus node pertama atau terakhir pada LinkedList dengan metode RemoveFirst dan RemoveLast. Ketika ada node yang sama yang akan dihapus maka Remove akan menghapus node pertama yang ditemukan, maka node yang sama yang lain tidak akan terhapus. Kelebihan dan kekurangan LinkedList Kelebihan Dalam penggunaan memori, LinkedList sering kali jauh lebih efisien daripada array atau List dari element. Dengan LinkedList waktu yang dibutuhkan untuk menyisipkan atau menghapus element pada collection dapat di minimalisir. Sedangkan pada array atau List, untuk menyisipkan element, kita harus menyalin seluruh element pada array tiap waktu.

Kekurangan Mengurangi level abstraksi, penting seperti mengurangi akses CPU dan memori pada program. Tiap kali referensi LinkedList ditemukan, level yang dari indireksi terjadi dan kinerja menurun.

Beri Nilai