Java:从lmdb JNI读取所有键到数组

时间:2015-11-25 18:59:44

标签: java arrays lmdb

我想使用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
}

1 个答案:

答案 0 :(得分:0)

似乎keyCount是低数字,或者甚至可能为零。

如果您不知道数组中有多少个键,请使用大于零的数字初始化String[]数组。然后,当您添加更多项目时,请确保keys.length()足够大以接受新项目。如果没有,请使用Arrays.copyOf()增加其大小。查看函数enter image description here

的Javadoc

此外,您可以使用更高级别的数组,例如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
}