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.

csharp
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:

text
Isi keranjang: 3 item
- Beras 5 kg
- Minyak goreng
- Telur
Item pertama: Beras 5 kg
Setelah perubahan: 2 item, item kedua: Minyak goreng 2 L

Mari kita telaah baris demi baris:

  1. Baris 1 (List<string> keranjang = new List<string>();): Kita mendeklarasikan List bertipe elemen string; instans awal belum berisi apa pun.
  2. Baris 3-5 (keranjang.Add(...)): Method Add menambahkan item di posisi akhir; Count naik menjadi 1, 2, lalu 3.
  3. Baris 7-11: Properti Count melaporkan jumlah elemen, dan foreach mengunjungi tiap item sesuai urutan penyisipan.
  4. Baris 13 (keranjang[1] = ...): Indexer mengganti nilai pada indeks 1; elemen "Minyak goreng" diganti "Minyak goreng 2 L".
  5. Baris 14 (keranjang.Remove("Telur")): Method Remove mencari nilai "Telur", menghapus kemunculan pertama, dan menurunkan Count menjadi 2.
  6. Baris 16-17: Indexer membaca elemen pada indeks tertentu; keranjang[0] tetap "Beras 5 kg" dan keranjang[1] kini berisi nilai baru.

Operasi Inti List #

OperasiPerilaku
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
CountJumlah elemen saat itu