0

我想使用 将 lmdb 中的所有键读取到一个列表中bufferCursor,但是我得到了 index out of bound 错误。

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

此外,您可以使用更高级别的数组,例如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
}
于 2015-11-25T19:09:42.760 回答