Nur eine Referenz für zukünftige Besucher Angenommen, wir haben ein Array namens foo
die 10 Elemente enthält. Was passiert, wenn wir versuchen, mit dem folgenden Code zu iterieren?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
Die Antwort ist eine IndexOutOfBoundsException
Der Grund ist einfach. Wie zuvor gesagt foo
enthält 10 Elemente, was bedeutet, dass Sie mit foo[0] to foo[9]
darauf zugreifen können Da die Array-Indizierung bei 0 beginnt foo[9]
enthält das letzte Element in Ihrem Array (das 10. Element)`
Was passiert aber in der for
Schleife?
Während Sie iterieren, überprüfen Sie immer i<=foo.length
um fortzufahren. Das Problem ist, dass wenn der Wert von i
ist 9 der Ausdruck i<=foo.length(which means i<=10)
wird zu true
ausgewertet .Das bedeutet, dass der for
Die Schleife wird ein letztes Mal ausgeführt. Wenn dies in Ihrer Schleife passiert, versuchen Sie, auf foo[10]
zuzugreifen die nicht existiert und daher die IndexOutOfBoundsException
Denken Sie also daran, dass Sie, wenn Sie über ein Array iterieren möchten, immer Verwenden Sie i<foo.length
Wie Sie es auch herausgefunden haben, lautet die Lösung für Ihr Problem:
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);
}