Gewoon een referentie voor toekomstige bezoekers Stel dat we een array hebben met de naam foo
die 10 items bevat. Wat gebeurt er als we proberen te herhalen met behulp van de volgende code?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
Het antwoord is een IndexOutOfBoundsException
De reden is simpel. Zoals eerder gezegd foo
bevat 10 elementen, wat betekent dat je ze kunt openen met foo[0] to foo[9]
Aangezien array-indexering begint vanaf 0 foo[9]
bevat het laatste element in uw array (het 10e element)`
Wat gebeurt er echter in de for
lus?
Terwijl je herhaalt, controleer je altijd i<=foo.length
om door te gaan. Het probleem is dat wanneer de waarde van i
is 9 de uitdrukking i<=foo.length(which means i<=10)
evalueert tot true
.Dat betekent dat de for
loop wordt nog een laatste keer uitgevoerd. Wanneer dit in uw loop gebeurt, probeert u toegang te krijgen tot foo[10]
die niet bestaat en vandaar de IndexOutOfBoundsException
Onthoud dus dat wanneer u een array wilt herhalen, u altijd gebruik i<foo.length
Dus zoals jij het ook hebt ontdekt, is de oplossing voor je probleem dit:
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);
}