0

を使用して、lmdb からすべてのキーをリストに読み込みたいのですbufferCursorが、インデックスが範囲外エラーになります。

String[] keys=new String[keyCount]; //keyCount gives no. of keys in lmdb tree
int count=0;
cursor.first(); //to move to first position
while(cursor.next){
    keys[count]= cursor.keyUtf8(0).getString().toString(); //getting error in this line it's working for reading values.
    count++l
}
4

1 に答える 1

0

keyCount数値が低いか、ゼロのようです。

配列に含まれるキーの数がわからない場合は、String[]ゼロより大きい数値で配列を初期化します。次に、アイテムを追加するときkeys.length()は、新しいアイテムを受け入れるのに十分な大きさであることを確認してください。そうでない場合は、 を使用Arrays.copyOf()してサイズを大きくします。ここで関数のJavadocをチェックしてください

また、 のような上位レベルの配列を使用することもできますArrayListcopyOf()これにより、メソッドが内部的に自動的に実行されるため、配列が処理できる以上の項目を追加することがなくなります。

そのような:

ArrayList<String> keys = new ArrayList<String>(keyCount); //keyCount gives no. of keys in lmdb tree
int count=0;
cursor.first(); //to move to first position

while(cursor.next){
   keys.add(cursor.keyUtf8(0).getString().toString()); //getting error in this line it's working for reading values.
   count++l
}
于 2015-11-25T19:09:42.760 に答える