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