for (String[] batch : snappyDB.allKeysIterator().byBatch(0))在byBatch()方法中,'size‘param是什么意思?
发布于 2020-04-14 12:18:39
如果不使用byBatch,您将只有一个不实现Iterator或Iterable的KeyIterator,因此不能在循环中使用它。
byBatch(n)创建一个BatchIterable,它是Iterable和Iterator。当你在KeyIterator上调用next()时,它基本上就是在它上调用next()。(来源)
KeyIterator#next(int max)似乎总是试图从数据库中获取max元素。因此,我假设您很可能在每次迭代的示例中都会在batch数组中包含batch元素。因此,在您所做的工作中传递0没有多大意义(甚至不确定它是否有效)。
同时,只要从GitHub回购中阅读自述文件,就会发现一些文件
Iterable<String[]> byBatch(int size); // Get an iterable of key batch, each batch of maximum [size] keys.发布于 2020-04-14 12:22:03
根据SnappyDB文档,找到了这里
Iterable<String[]> byBatch(int size);// Get an iterable of key batch, each batch of maximum [size] keys.
因此,size指定了每个批处理的最大键数。然而,根据这些文件:
请注意,您应该使用byBatch迭代只处理大型集合上的所有键。在相当小的集合上,使用基于数组的API (findKeys和findKeysBetween)和form (字符串键: db.findKeys("android"))的效率要高得多。迭代器只应用于处理大型集合或用于集合分页视图/访问。
因此,确保在用例中确实需要byBatch。
https://stackoverflow.com/questions/61207370
复制相似问题