我想使用bufferCursor
将lmdb中的所有键读入列表,但是我得到的索引超出了绑定错误。
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
}
答案 0 :(得分:0)
似乎keyCount
是低数字,或者甚至可能为零。
如果您不知道数组中有多少个键,请使用大于零的数字初始化String[]
数组。然后,当您添加更多项目时,请确保keys.length()
足够大以接受新项目。如果没有,请使用Arrays.copyOf()
增加其大小。查看函数
此外,您可以使用更高级别的数组,例如ArrayList
。通过在内部自动执行copyOf()
方法,这将确保您永远不会添加超出数组可以处理的项目。
如:
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
}