for (String[] batch : snappyDB.allKeysIterator().byBatch(0))
byBatch() 方法中的"size"参数是什么意思?
如果不使用byBatch
,你只会有一个不实现Iterator
或Iterable
的KeyIterator
,所以你不能在循环中使用它。
byBatch(n)
创建一个BatchIterable
Iterable
和一个Iterator
。它基本上只是在KeyIterator
上调用next(n)
,当你调用next()
它时。(来源)
KeyIterator#next(int max)
似乎总是尝试从数据库中获取max
元素。因此,我认为您很可能在每次迭代的示例中batch
数组中有max
元素。因此,像您所做的那样传递0
没有多大意义(不确定这是否有效)。
此外,只需阅读 GitHub 存储库中的自述文件,就会发现一些文档:
Iterable<String[]> byBatch(int size); // Get an iterable of key batch, each batch of maximum [size] keys.
根据 SnappyDB 文档,在这里找到:
Iterable<String[]> byBatch(int size);// Get an iterable of key batch, each batch of maximum [size] keys.
因此,size 指定每个批次的最大键数。但是,根据文档:
请注意,您应该使用 byBatch 可迭代对象来处理所有 密钥仅在大型集合上。在相当小的集合上,使用 基于数组的 API(findKeys 和 findKeysBetween),其形式为 (字符串键:db.findKeys("android"))效率更高。 迭代器应仅用于处理大型集合或 集合分页视图/访问。
因此,请确保您确实需要用例中的byBatch。