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