Array yang dibahas pada section Array dan String berukuran tetap: jumlah elemen ditentukan saat deklarasi dan tidak dapat berubah. Padahal, kebutuhan nyata sering bergerak — keranjang belanja bertambah satu item lagi, lalu satu item batal dan perlu dikeluarkan. List menjawab kebutuhan tersebut: koleksi generik yang ukurannya bertambah dan berkurang mengikuti isi program.
Koleksi dengan Ukuran Dinamis #
List<T> adalah generic type, sehingga ditulis dengan tipe elemen di dalam tanda kurung sudut: List<string> menyimpan string, List<int> menyimpan int. Huruf T adalah placeholder tipe yang akan dibahas lengkap pada section tersendiri; untuk saat ini, cukup pahami bahwa T diganti nama tipe saat kita mendeklarasikan koleksi. Di balik layar, List mengelola array internal; ketika array penuh, runtime mengalokasikan array baru yang lebih besar dan memindahkan seluruh elemen, sehingga penambahan item dapat terus berlanjut.
List<string> keranjang = new List<string>();
keranjang.Add("Beras 5 kg");
keranjang.Add("Minyak goreng");
keranjang.Add("Telur");
Console.WriteLine($"Isi keranjang: {keranjang.Count} item");
foreach (string item in keranjang)
{
Console.WriteLine($"- {item}");
}
keranjang[1] = "Minyak goreng 2 L";
keranjang.Remove("Telur");
Console.WriteLine($"Item pertama: {keranjang[0]}");
Console.WriteLine($"Setelah perubahan: {keranjang.Count} item, item kedua: {keranjang[1]}");Output yang Dihasilkan:
Isi keranjang: 3 item
- Beras 5 kg
- Minyak goreng
- Telur
Item pertama: Beras 5 kg
Setelah perubahan: 2 item, item kedua: Minyak goreng 2 LMari kita telaah baris demi baris:
- Baris 1 (
List<string> keranjang = new List<string>();): Kita mendeklarasikan List bertipe elemenstring; instans awal belum berisi apa pun. - Baris 3-5 (
keranjang.Add(...)): MethodAddmenambahkan item di posisi akhir;Countnaik menjadi 1, 2, lalu 3. - Baris 7-11: Properti
Countmelaporkan jumlah elemen, dan foreach mengunjungi tiap item sesuai urutan penyisipan. - Baris 13 (
keranjang[1] = ...): Indexer mengganti nilai pada indeks 1; elemen"Minyak goreng"diganti"Minyak goreng 2 L". - Baris 14 (
keranjang.Remove("Telur")): MethodRemovemencari nilai"Telur", menghapus kemunculan pertama, dan menurunkanCountmenjadi 2. - Baris 16-17: Indexer membaca elemen pada indeks tertentu;
keranjang[0]tetap"Beras 5 kg"dankeranjang[1]kini berisi nilai baru.
Operasi Inti List #
| Operasi | Perilaku |
|---|---|
Add(item) | Menambahkan item pada posisi akhir |
Insert(index, item) | Menyisipkan item pada indeks tertentu |
Remove(item) | Menghapus kemunculan pertama dari item bernilai sama |
RemoveAt(index) | Menghapus elemen pada indeks tertentu |
Contains(item) | Mengembalikan true bila item ada di dalam List |
Count | Jumlah elemen saat itu |