MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

indexoutofboundsexception dans Mongodb java

Juste une référence pour les futurs visiteurs Supposons que nous ayons un tableau appelé foo qui contient 10 éléments. Que se passe-t-il si nous essayons d'itérer en utilisant le code suivant ? :

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

La réponse est une IndexOutOfBoundsException La raison est simple.Comme dit précédemment foo contient 10 éléments, ce qui signifie que vous pouvez y accéder en utilisant foo[0] to foo[9] Puisque l'indexation du tableau commence à 0 foo[9] contient le dernier élément de votre tableau (le 10ème élément)`

Que se passe-t-il cependant dans le for boucle ?

Lorsque vous itérez, vous vérifiez toujours i<=foo.length pour continuer.Le problème est que lorsque la valeur de i vaut 9 l'expression i<=foo.length(which means i<=10) évalue à true .Cela signifie que le for la boucle s'exécutera une dernière fois. Lorsque cela se produira dans votre boucle, vous essaierez d'accéder à foo[10] qui n'existe pas et donc IndexOutOfBoundsException

Alors rappelez-vous que lorsque vous voulez itérer sur un tableau, vous toujours utilisez i<foo.length

Donc, comme vous l'avez également compris, la solution à votre problème est la suivante :

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);
}