- 所有超级接口:
Cloneable
- 所有已知实现类:
RoaringBatchIterator,RoaringBatchIterator
-
方法概要
修饰符和类型方法说明voidadvanceIfNeeded(int target) If needed, advance as long as the next value is smaller than minval The advanceIfNeeded method is used for performance reasons, to skip over unnecessary repeated calls to next.default IntIteratorasIntIterator(int[] buffer) Creates a wrapper around the iterator so it behaves like an IntIteratorclone()Creates a copy of the iterator.booleanhasNext()Returns true is there are more values to get.intnextBatch(int[] buffer) Writes the next batch of integers onto the buffer, and returns how many were written.
-
方法详细资料
-
nextBatch
int nextBatch(int[] buffer) Writes the next batch of integers onto the buffer, and returns how many were written. Aims to fill the buffer.- 参数:
buffer- - the target to write onto- 返回:
- how many values were written during the call.
-
hasNext
boolean hasNext()Returns true is there are more values to get.- 返回:
- whether the iterator is exhaused or not.
-
clone
BatchIterator clone()Creates a copy of the iterator.- 返回:
- a clone of the current iterator
-
asIntIterator
Creates a wrapper around the iterator so it behaves like an IntIterator- 参数:
buffer- - array to buffer bits into (size 128-256 should be best).- 返回:
- the wrapper
-
advanceIfNeeded
void advanceIfNeeded(int target) If needed, advance as long as the next value is smaller than minval The advanceIfNeeded method is used for performance reasons, to skip over unnecessary repeated calls to next. Suppose for example that you wish to compute the intersection between an ordered list of integers (e.g., int[] x = {1,4,5}) and a BatchIterator. You might do it as follows...
The benefit of calling advanceIfNeeded is that each such call can be much faster than repeated calls to "next". The underlying implementation can "skip" over some data.int[] buffer = new int[128]; BatchIterator j = // get an iterator int val = // first value from my other data structure j.advanceIfNeeded(val); while ( j.hasNext() ) { int limit = j.nextBatch(buffer); for (int i = 0; i < limit; i++) { if (buffer[i] == val) { // got it! // do something here val = // get next value? } } j.advanceIfNeeded(val); }- 参数:
target- threshold
-