Penelusuran Array
| English | Bahasa Indonesia |
|---|---|
| traversal/træˈvɜːsl/ | penelusuran |
| enhanced for loop/enˈhænst fɔː luːp/ | perulangan for ditingkatkan |
Mengunjungi setiap elemen
- Traversing mengunjungi setiap elemen array, biasanya secara berurutan.
- Perulangan terindeks standar:
for (int i = 0; i < a.length; i++) { ... a[i] ... } ibergerak dari0kelength - 1, sehinggaa[i]mencapai setiap elemen sekali.- Traversing adalah fondasi dari setiap algoritma array.
Perulangan for-each
- Enhanced for loop (for-each) untuk mengunjungi setiap nilai tanpa indeks:
for (int x : a) { ... x ... }—xmengambil nilai setiap elemen secara bergantian.- Lebih bersih jika Anda hanya membutuhkan nilai, bukan posisinya.
- Namun, hal ini tidak dapat mengubah array atau menggunakan indeks.
Terindeks vs. for-each
- Gunakan perulangan terindeks ketika Anda memerlukan posisi
i, atau untuk memodifikasi elemen. - Gunakan perulangan for-each ketika Anda hanya perlu membaca setiap nilai.
a[i] = 0;memerlukan perulangan terindeks; menjumlahkan nilai dapat menggunakan for-each.- Keduanya mengunjungi setiap elemen — pilih yang sesuai dengan tugas.
Batas lagi
- Kondisi perulangan terindeks
i < a.lengthmenjagaitetap valid. i <= a.lengthmelebihi batas satu angka → ArrayIndexOutOfBoundsException.- Perulangan for-each tidak bisa keluar batas — ia menangani rentang untuk Anda.
- Saat Anda menulis indeks sendiri, Anda bertanggung jawab atas batasnya.
Perulangan for-each membaca nilai tetapi tidak dapat mengonversinya kembali ke dalam array. for (int x : a) { x = 0; } hanya mengubah salinan lokal x, bukan a — untuk nol-kan array Anda memerlukan perulangan terindeks a[i] = 0;. Gunakan for-each untuk membaca, perulangan terindeks untuk memodifikasi atau ketika Anda memerlukan posisi i.
Dua cara untuk menjumlahkan array:
- Terindeks:
for (int i = 0; i < a.length; i++) { sum += a[i]; } - For-each:
for (int x : a) { sum += x; } - Keduanya menghasilkan total yang sama; for-each lebih bersih ketika indeks tidak diperlukan.
Sebuah traversing mengunjungi setiap elemen. Perulangan terindeks (for (int i = 0; i < a.length; i++)) memberikan posisi i dan dapat memodifikasi a[i]; perulangan for-each (for (int x : a)) membaca setiap nilai dengan bersih tetapi tidak dapat mengubah array atau menggunakan indeks. Pilih berdasarkan apakah Anda memerlukan indeks atau memodifikasi.
Menelusuri array untuk menjumlahkannya
i mengunjungi setiap indeks; sum mengakumulasi a[i] (di sini a = {10,20,30}).
Kondisi yang benar untuk menelusuri array a dengan indeks adalah...
Indeks valid adalah 0..length-1, jadi i < a.length.
Loop mana yang harus Anda gunakan jika perlu MEMODIFIKASI elemen array?
for-each tidak bisa menulis kembali; gunakan a[i] = ... dengan loop berindeks.
Dalam for (int x : a) { x = 0; }, array a diset ke semua nol.
x adalah salinan lokal; array tidak berubah.
Loop for-each for (int x : a) paling baik ketika Anda hanya perlu...
for-each membaca nilai dengan bersih tanpa indeks.
Mengunjungi setiap elemen array disebut ___ (satu kata).
Penelusuran mengunjungi setiap elemen.