将来の訪問者のための単なる参照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] 配列の最後の要素(10番目の要素)が含まれています `
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);
}