Tiga cabang toko mencatat penjualan harian, tetapi cabang pertama membuka tiga hari, cabang kedua empat hari, dan cabang ketiga dua hari. Array multidimensi menuntut seluruh baris sama panjang, sehingga struktur tersebut boros memori untuk data seperti ini. Array jagged menyelesaikan ketidaksesuaian itu: array yang setiap elemennya berupa array lain dengan panjang bebas.
Deklarasi Array Jagged #
Sintaks int[][] menyatakan array dari array int. Array luar dialokasikan terlebih dahulu, kemudian setiap array dalam dialokasikan sendiri-sendiri. Karena setiap baris adalah objek array yang berdiri sendiri, properti Length bisa dipanggil pada array luar maupun pada tiap baris.
int[][] penjualanCabang =
{
new int[] { 5, 7, 6 },
new int[] { 10, 12, 9, 8 },
new int[] { 3, 4 }
};
Console.WriteLine(penjualanCabang.Length);
Console.WriteLine(penjualanCabang[0].Length);
Console.WriteLine(penjualanCabang[1].Length);
Console.WriteLine(penjualanCabang[2].Length);
Console.WriteLine(penjualanCabang[1][2]);Output yang Dihasilkan:
3
3
4
2
9Mari kita telaah baris demi baris:
- Baris 1-5: Array luar memuat tiga elemen, dan setiap elemen diisi array baru dengan panjang yang berbeda-beda.
- Baris 7 (
penjualanCabang.Length):Lengthpada array luar melaporkan jumlah baris, yaitu3. - Baris 8-10 (
penjualanCabang[i].Length):Lengthpada tiap baris melaporkan panjang baris itu sendiri:3,4, dan2. - Baris 11 (
penjualanCabang[1][2]): Dua pasang kurung dibaca bertahap: kurung pertama memilih baris1, kurung kedua memilih elemen2pada baris tersebut, yaitu9.
Menjumlahkan Tiap Baris #
Penelusuran array jagged memadukan for loop untuk array luar dan foreach untuk tiap baris:
for (int i = 0; i < penjualanCabang.Length; i++)
{
int total = 0;
foreach (int nilai in penjualanCabang[i])
{
total += nilai;
}
Console.WriteLine($"Total cabang {i + 1}: {total}");
}Output yang Dihasilkan:
Total cabang 1: 18
Total cabang 2: 39
Total cabang 3: 7Loop luar mengunjungi baris satu per satu, dan foreach menjumlahkan isi baris yang sedang diproses tanpa peduli panjangnya. Foreach bekerja di sini karena setiap penjualanCabang[i] memang sebuah array utuh.
| Aspek | Multidimensi (int[,]) | Jagged (int[][]) |
|---|---|---|
| Bentuk | Tabel persegi panjang | Baris dengan panjang bebas |
| Deklarasi | Satu objek berdimensi banyak | Array luar plus array dalam terpisah |
| Akses elemen | nilai[1, 2] | nilai[1][2] |
| Cocok untuk | Grid tetap, papan permainan | Data baris tidak sama panjang |