sql >> Base de Datos >  >> NoSQL >> MongoDB

indexoutofboundexception en Mongodb java

Solo una referencia para futuros visitantes Supongamos que tenemos una matriz llamada foo que contiene 10 elementos. ¿Qué sucede si intentamos iterar usando el siguiente código?:

for(int i = 0;i<=foo.length;i++){
   //some code that uses foo[i] here
}

La respuesta es una IndexOutOfBoundsException La razón es simple. Como se dijo antes foo contiene 10 elementos, lo que significa que puede acceder a ellos usando foo[0] to foo[9] Dado que la indexación de matrices comienza desde 0 foo[9] contiene el último elemento de su matriz (el décimo elemento)`

Sin embargo, ¿qué sucede en el for? bucle?

A medida que itera, siempre verifica i<=foo.length para continuar. El problema es que cuando el valor de i es 9 la expresión i<=foo.length(which means i<=10) se evalúa como true .Eso significa que el for el bucle se ejecutará por última vez. Cuando esto suceda en su bucle, intentará acceder a foo[10] que no existe y por lo tanto la IndexOutOfBoundsException

Así que recuerda que cuando quieras iterar sobre una matriz, siempre usa i<foo.length

Entonces, como usted también descubrió, la solución a su problema es 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);
}