Collection pada C#
Meskipun array pada C# dapat menyimpan banyak nilai sekaligus, mereka tidak dapat mengubah ukurannya secara dinamis. Class-class collection pada C# mirip dengan Array, tetapi dapat diubah ukurannya secara dinamis. Ada banyak class yang tersedia Collections pada C#. Di bawah ini adalah beberapa contoh program yang menggunakan Collections. Akan tetapi, sebelum itu, Saya ingin memperkenalkan perulangan foreach pada C# yang sangat berguna ketika digabungkan dengan Collection. Struktur perulangan foreach adalah:
foreach ([Tipe data item] [IdentifierItem] In [Collection]) {
//Hal yang dilakukan
//Contoh: Console.WriteLine([IdentifierItem]);
}
List pada C#
Di bawah ini adalah contoh suatu program yang menggunakan List pada C#. Method yang penting pada List adalah Add, Remove, RemoveAt, dan Contains. Untuk method Remove dan Contains, kita perlu mengoverride method Equals.
class Program {
static void Main(string[] args) {
Sales oSales = new Sales(1);
oSales.AddItem("Coca Cola", 3);
oSales.AddItem("Sprite", 3);
oSales.AddItem("Fanta", 5);
oSales.RemoveLast();
oSales.AddItem("Coca Cola", 5);
oSales.AddItem("Fanta", 3);
oSales.RemoveItem(new Sales.SalesItem() { Name = "Sprite" });
oSales.RemoveItem(new Sales.SalesItem() { Name = "Sprite" });
oSales.ShowItems();
Console.ReadKey();
}
}
public class Sales {
public int ID { get; set; }
public DateTime TanggalBeli { get; set; }
public List<SalesItem> Items { get; private set; }
public Sales(int newid) {
this.ID = newid;
TanggalBeli = DateTime.Now;
Items = new List<SalesItem>();
}
public bool AddItem(string name, int jumlah) {
SalesItem itemBaru = new SalesItem() { Nama = name, Jumlah = jumlah };
if (!Items.Contains(itemBaru)) {
Items.Add(itemBaru);
Console.WriteLine(itemBaru.Nama + " telah ditambahkan");
return true;
} else {
Console.WriteLine(itemBaru.Nama + " telah ditambahkan sebelumnya");
return false;
}
}
public bool RemoveItem(SalesItem item) {
if (!Items.Contains(item)) {
Console.WriteLine("Item tidak ditemukan");
return false;
}
Items.Remove(item);
Console.WriteLine(item.Nama + " telah diremove");
return true;
}
public bool RemoveLast() {
if (Items.Count == 0) {
Console.WriteLine("Tak ada item");
return false;
}
Console.WriteLine(Items[Items.Count - 1].Nama + " telah diremove");
Items.RemoveAt(Items.Count - 1);
return true;
}
public void ShowItems() {
Console.WriteLine("------- Daftar Item ----------");
foreach (SalesItem i in Items) {
Console.WriteLine(i.Nama + ": " + i.Jumlah);
}
Console.WriteLine("--------------------------------");
}
public class SalesItem {
public string Nama { get; set; }
public int Jumlah { get; set; }
//Digunakan untuk Contains dan Remove, untuk membandingkan objek
public override bool Equals(object obj) {
//Dengan var, C# akan otomatis mengetahui bahwa Other adalah SalesItem
var Banding = obj as SalesItem;
if (Banding.Nama == this.Nama) return true;
return false;
}
}
}
Dictionary pada C#
Dictionary (kamus) pada C# berisi pasangan-pasangan key dan value. Tipe item pada Dictionary adalah KeyValuePair<tipeKey, tipeValue>. Berikut adalah contoh program yang menggunakan Dictionary:
class Program {
static void Main(string[] args) {
Dictionary<string, string> InggrisIndonesia = new Dictionary<string, string>();
InggrisIndonesia.Add("Get", "Ambil");
InggrisIndonesia.Add("Like", "Seperti");
InggrisIndonesia.Add("Book", "Buku");
InggrisIndonesia.Add("I", "Saya");
InggrisIndonesia.Add("Code", "Kode");
InggrisIndonesia.Add("For", "Untuk");
InggrisIndonesia.Add("Money", "Uang");
foreach (KeyValuePair<string, string> kv in InggrisIndonesia) {
Console.WriteLine(kv.Key + " = " + kv.Value);
}
Console.WriteLine("---------------------------");
Console.Write("Bahasa Indonesia dari: ");
string cari = Console.ReadLine();
if (InggrisIndonesia.ContainsKey(cari)) {
Console.WriteLine(InggrisIndonesia[cari]);
} else {
Console.WriteLine("Kata tidak ditemukan");
}
Console.ReadKey();
}
}
Queue pada C#
Ada 2 class Queue pada C#. Satu berada di bawah namespace System.Collections, yang lain berada di bawah namespace System.Collections.Generic. Pada program di bawah, kita menggunakan class Queue Generic:
class Program {
static void Main(string[] args) {
Queue<Pelanggan> antrian = new Queue<Pelanggan>();
antrian.Enqueue(new Pelanggan("Fandi", "62852 XXXX YYY"));
antrian.Enqueue(new Pelanggan("Susanto", "62813 XXXX YYY"));
antrian.Enqueue(new Pelanggan("Billy", "62819 XXX YYYY"));
Pelanggan Dilayani;
for (int i = 1; i <= 3; i++) {
Dilayani = antrian.Dequeue();
Console.WriteLine("Antrian No." + Dilayani.NoAntrian + ", Tuan." + Dilayani.Nama + " sedang dilayani");
}
Console.ReadKey();
}
}
class Pelanggan { //Access modifier tidak ditulis = internal
public static int NoAntrianBerikutnya = 1;
public string Nama { get; set; }
public string Telepon { get; set; }
public int NoAntrian { get; set; }
public Pelanggan(string nama, string telp) {
this.Nama = nama;
this.Telepon = telp;
this.NoAntrian = NoAntrianBerikutnya++;
//Berarti: NoAntrian = NoAntrianBerikutnya
//Kemudian: NoAntrianBerikutnya++
}
}
Masih ada banyak class Collection pada C#. Tetapi kita tidak akan membahas semuanya di sini. Untuk daftar class Collection pada C# yang lengkap, kunjungi MSDN.

