Daftar harga buah di etalase selalu ditampilkan rapi menurut abjad nama buah. Dictionary dari bab sebelumnya tidak menjamin urutan apa pun, sehingga menampilkan data secara terurut memerlukan pengurutan tambahan. .NET menyediakan dua koleksi yang menjaga keterurutan dari dalam: SortedList dan SortedDictionary. Keduanya menyimpan pasangan key-value dan mengurutkan berdasarkan kunci secara otomatis.
SortedList: Array Terurut Berdasarkan Kunci #
Setiap pasangan yang ditambahkan langsung ditempatkan pada posisi sesuai urutan kunci. Iterasi atas koleksi karenanya selalu menghasilkan urutan yang rapi tanpa usaha tambahan dari programmer.
SortedList<string, int> hargaBuah = new SortedList<string, int>();
hargaBuah.Add("Jeruk", 28000);
hargaBuah.Add("Apel", 35000);
hargaBuah.Add("Pepaya", 12000);
Console.WriteLine("Isi SortedList (urut kunci):");
foreach (KeyValuePair<string, int> baris in hargaBuah)
{
Console.WriteLine($"- {baris.Key}: Rp{baris.Value}");
}Output yang Dihasilkan:
Isi SortedList (urut kunci):
- Apel: Rp35000
- Jeruk: Rp28000
- Pepaya: Rp12000Mari kita telaah contoh di atas:
- Baris 1: Kita mendeklarasikan
SortedListdengan kuncistringdan nilaiint. - Baris 3-5 (
hargaBuah.Add(...)): Ketiga pasangan masuk dengan urutan acak: Jeruk, Apel, Pepaya. - Baris 7-11: Saat iterasi berjalan, runtime mengeluarkan pasangan menurut urutan kunci —
ApelsebelumJeruk, danJeruksebelumPepaya— meskipun urutan penyisipannya berbeda.
SortedDictionary: Pohon Pencarian Terurut #
SortedDictionary<TKey, TValue> menawarkan jaminan urutan yang sama, tetapi menyimpan datanya dalam struktur pohon biner. Perbedaan struktur ini memengaruhi performa:
| Aspek | SortedList | SortedDictionary |
|---|---|---|
| Struktur internal | Array terurut | Pohon biner (binary search tree) |
| Penambahan di tengah data | Lebih lambat (elemen bergeser) | Lebih cepat (perubahan penunjuk) |
| Akses berdasarkan indeks | Tersedia (GetByIndex) | Tidak tersedia |
| Penggunaan memori | Lebih hemat | Lebih besar |
SortedDictionary<string, int> stokCabang = new SortedDictionary<string, int>();
stokCabang.Add("Cabang Surabaya", 120);
stokCabang.Add("Cabang Bandung", 85);
stokCabang.Add("Cabang Medan", 64);
Console.WriteLine("Isi SortedDictionary (urut kunci):");
foreach (KeyValuePair<string, int> baris in stokCabang)
{
Console.WriteLine($"- {baris.Key}: {baris.Value} kotak");
}Output yang Dihasilkan:
Isi SortedDictionary (urut kunci):
- Cabang Bandung: 85 kotak
- Cabang Medan: 64 kotak
- Cabang Surabaya: 120 kotak