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);
}