Sekedar referensi untuk pengunjung masa depan Misalkan kita memiliki larik yang disebut foo
yang berisi 10 item. Apa yang terjadi jika kita mencoba mengulangi menggunakan kode berikut?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
Jawabannya adalah IndexOutOfBoundsException
Alasannya sederhana. Seperti yang dikatakan sebelumnya foo
berisi 10 elemen yang berarti Anda dapat mengaksesnya menggunakan foo[0] to foo[9]
Karena pengindeksan array dimulai dari 0 foo[9]
berisi elemen terakhir dalam larik Anda(elemen ke-10)`
Apa yang terjadi di for
lingkaran?
Saat Anda mengulangi, Anda selalu memeriksa i<=foo.length
untuk melanjutkan. Masalahnya adalah ketika nilai i
adalah 9 ekspresi i<=foo.length(which means i<=10)
mengevaluasi ke true
.Itu berarti bahwa for
loop akan berjalan untuk terakhir kalinya. Ketika ini terjadi di loop Anda, Anda akan mencoba mengakses foo[10]
yang tidak ada dan karenanya IndexOutOfBoundsException
Jadi ingat bahwa ketika Anda ingin mengulangi array Anda selalu gunakan i<foo.length
Jadi saat Anda juga menemukan solusi untuk masalah Anda adalah ini:
for(int i=0; i< field.length; i++){
String[] field = allFields.split(",");
String field1 = "$"+field[i];
BsonField includeFields = Accumulators.first(field[i], field1);
includeList.add(includeFields);
}