Daftar belanja, catatan stok, dan urutan pembacaan data adalah tiga kebutuhan klasik aplikasi persediaan. Namespace System.Collections.Generic menyediakan koleksi generik siap pakai untuk ketiganya, dan seluruh koleksi tersebut berperilaku sebagai generic class yang sudah kita kenal. Bab ini memberi tur singkat tiga tipe inti; pembahasan lengkapnya tersedia pada section Koleksi Dasar.
List<T> #
List<T> menyimpan urutan item bertipe T dengan akses indeks langsung. Method Add menambah item di akhir, dan property Count menghitung isi. Karena List<T> adalah generic class, satu definisi di standard library melayani daftar string, daftar int, dan daftar tipe buatan kita sendiri dengan jaminan tipe yang sama kuatnya:
List<string> daftarBelanja = new List<string> { "Beras", "Minyak Goreng", "Telur" };
daftarBelanja.Add("Gula");
Dictionary<string, int> stokGudang = new Dictionary<string, int>();
stokGudang["Beras"] = 30;
stokGudang["Minyak Goreng"] = 15;
IEnumerable<string> barisBelanja = daftarBelanja;
foreach (string barang in barisBelanja)
{
Console.WriteLine(barang);
}
Console.WriteLine($"Jumlah jenis barang: {daftarBelanja.Count}");
Console.WriteLine($"Stok minyak goreng: {stokGudang["Minyak Goreng"]}");Output yang Dihasilkan:
Beras
Minyak Goreng
Telur
Gula
Jumlah jenis barang: 4
Stok minyak goreng: 15Mari kita bedah baris demi baris:
new List<string> { ... }: Collection initializer mengisi daftar saat pembuatan; semua elemen wajib string.daftarBelanja.Add("Gula"):List<T>tumbuh otomatis; compiler menolak argumen selain string.stokGudang["Beras"] = 30;: IndexerDictionary<TKey, TValue>membuat atau memperbarui pasangan kunci-nilai dalam satu pernyataan.IEnumerable<string> barisBelanja = daftarBelanja;:List<T>mengimplementasikanIEnumerable<T>, sehingga daftar dapat dipandang sebagai kontrak baca umum.stokGudang["Minyak Goreng"]: Pencarian lewat kunci mengembalikan nilai int tanpa cast.
Dictionary<TKey, TValue> #
Dictionary<TKey, TValue> menyimpan pasangan kunci-nilai dan mencari nilai lewat kunci dalam waktu yang hampir konstan. Type parameter pertama menjadi tipe kunci, dan parameter kedua menjadi tipe nilai; pada contoh di atas, kunci berupa nama barang dan nilai berupa jumlah stok. Pencarian dengan kunci yang tidak ada melempar KeyNotFoundException, sehingga method ContainsKey menjadi teman pemeriksaan sebelum akses.
IEnumerable<T> #
IEnumerable<T> adalah kontrak paling longgar: ia hanya menjanjikan urutan yang dapat dibaca lewat foreach. Method yang menerima IEnumerable<T> bekerja untuk List<T>, array, dan koleksi lain tanpa mengubah satu baris pun.
Ringkasan Tiga Tipe #
| Koleksi | Isi | Kekuatan utama |
|---|---|---|
List<T> | Urutan item bertipe T | Akses indeks, tambah dan hapus dinamis |
Dictionary<TKey, TValue> | Pasangan kunci-nilai | Pencarian cepat lewat kunci |
IEnumerable<T> | Urutan baca-saja | Kontrak minimal untuk foreach |
IEnumerable<T> patut mendapat perhatian khusus: interface ini dideklarasikan dengan out, sehingga variance yang dibahas pada bab Covariance dan Contravariance Generics membuatnya fleksibel di sepanjang hierarki tipe.
Untuk HashSet<T>, Queue<T>, Stack<T>, dan panduan memilih koleksi yang tepat, lanjutkan ke section Koleksi Dasar.