将来の訪問者のための単なる参照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);
}