MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

indexoutofboundsexception em Mongodb java


Apenas uma referência para futuros visitantes Suponha que tenhamos um array chamado foo que contém 10 itens. O que acontece se tentarmos iterar usando o seguinte código?:
for(int i = 0;i<=foo.length;i++){
   //some code that uses foo[i] here
}

A resposta é um IndexOutOfBoundsException A razão é simples. Como dito antes foo contém 10 elementos, o que significa que você pode acessá-los usando foo[0] to foo[9] Como a indexação de array começa em 0 foo[9] contém o último elemento em sua matriz (o 10º elemento)`

O que acontece no for ciclo?

Ao iterar, você sempre verifica i<=foo.length para continuar. O problema é que quando o valor de i é 9 a expressão i<=foo.length(which means i<=10) avalia como true .Isso significa que o for loop será executado pela última vez. Quando isso acontecer em seu loop, você tentará acessar foo[10] que não existe e, portanto, o IndexOutOfBoundsException

Portanto, lembre-se de que, quando você deseja iterar em uma matriz, sempre use i<foo.length

Então, como você também descobriu, a solução para o seu problema é esta:
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);
}