0
for (String[] batch : snappyDB.allKeysIterator().byBatch(0))

byBatch() 方法中的“大小”参数是什么意思?

4

2 回答 2

0

根据 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。

于 2020-04-14T12:22:03.977 回答
0

不使用byBatch你只会有一个KeyIteratorwhich 没有实现Iterator,或者Iterable你不能在循环中使用它。

byBatch(n)创建一个BatchIterablewhich 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.
于 2020-04-14T12:18:39.767 回答