Solo un riferimento per futuri visitatori Supponiamo di avere un array chiamato foo
che contiene 10 elementi. Cosa succede se proviamo a eseguire l'iterazione utilizzando il seguente codice?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
La risposta è una IndexOutOfBoundsException
Il motivo è semplice. Come detto prima foo
contiene 10 elementi, il che significa che puoi accedervi usando foo[0] to foo[9]
Poiché l'indicizzazione dell'array inizia da 0 foo[9]
contiene l'ultimo elemento nell'array (il decimo elemento)`
Cosa succede però nel for
ciclo?
Durante l'iterazione controlli sempre i<=foo.length
per continuare. Il problema è che quando il valore di i
è 9 l'espressione i<=foo.length(which means i<=10)
restituisce true
.Ciò significa che il for
il loop verrà eseguito per l'ultima volta. Quando ciò accade nel tuo loop, proverai ad accedere a foo[10]
che non esiste e quindi IndexOutOfBoundsException
Quindi ricorda che quando vuoi scorrere un array devi sempre usa i<foo.length
Quindi, come anche tu hai capito, la soluzione al tuo problema è questa:
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);
}