Само справка за бъдещи посетители. Да предположим, че имаме масив, наречен foo
който съдържа 10 елемента. Какво се случва, ако се опитаме да повторим, използвайки следния код?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
Отговорът е IndexOutOfBoundsException
Причината е проста. Както казах преди foo
съдържа 10 елемента, което означава, че имате достъп до тях чрез foo[0] to foo[9]
Тъй като индексирането на масива започва от 0 foo[9]
съдържа последния елемент във вашия масив (десетия елемент)`
Какво обаче се случва в for
цикъл?
Докато итерирате, винаги проверявате i<=foo.length
за да продължите. Проблемът е, че когато стойността на i
е 9 изразът i<=foo.length(which means i<=10)
дава оценка на true
.Това означава, че for
цикълът ще се изпълнява за последен път. Когато това се случи във вашия цикъл, ще опитате да получите достъп до foo[10]
който не съществува и следователно IndexOutOfBoundsException
Така че не забравяйте, че когато искате да итерирате върху масив, вие винаги използвайте i<foo.length
Както и вие разбрахте, решението на вашия проблем е следното:
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);
}