public class BufferIntIteratorFlyweight extends java.lang.Object implements PeekableIntIterator
wrap(ImmutableRoaringBitmap)
For better performance, consider the ImmutableRoaringBitmap.forEach(org.bitlap.roaringbitmap.IntConsumer) method.| 构造器和说明 |
|---|
BufferIntIteratorFlyweight()
Creates an instance that is not ready for iteration.
|
BufferIntIteratorFlyweight(ImmutableRoaringBitmap r)
Creates an instance that is ready for iteration.
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
advanceIfNeeded(int minval)
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.
|
PeekableIntIterator |
clone()
Creates a copy of the iterator.
|
boolean |
hasNext() |
int |
next() |
int |
peekNext()
Look at the next value without advancing
The peek is useful when working with several iterators at once.
|
void |
wrap(ImmutableRoaringBitmap r)
Prepares a bitmap for iteration
|
public BufferIntIteratorFlyweight()
wrap(ImmutableRoaringBitmap).public BufferIntIteratorFlyweight(ImmutableRoaringBitmap r)
r - bitmap to be iterated overpublic PeekableIntIterator clone()
PeekableIntIteratorclone 在接口中 IntIteratorclone 在接口中 PeekableIntIteratorclone 在类中 java.lang.Objectpublic boolean hasNext()
hasNext 在接口中 IntIteratorpublic int next()
next 在接口中 IntIteratorpublic void wrap(ImmutableRoaringBitmap r)
r - bitmap to be iterated overpublic void advanceIfNeeded(int minval)
PeekableIntIterator
PeekableIntIterator j = // get an iterator
int val = // first value from my other data structure
j.advanceIfNeeded(val);
while ( j.hasNext() ) {
if(j.next() == val) {
// ah! ah! val is in the intersection...
// do something here
val = // get next value?
}
j.advanceIfNeeded(val);
}
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.advanceIfNeeded 在接口中 PeekableIntIteratorminval - thresholdpublic int peekNext()
PeekableIntIterator
PriorityQueue pq = new PriorityQueue(100,
new Comparator<PeekableIntIterator>() {
public int compare(PeekableIntIterator a,
PeekableIntIterator b) {
return a.peek() - b.peek();
}
});
//... populate pq
while(! pq.isEmpty() ) {
// get iterator with a smallest value
PeekableIntIterator pi = pq.poll();
int x = pi.next(); // advance
// do something with x
if(pi.hasNext()) pq.add(pi)
}
Notice how the peek method allows you to compare iterators in a way
that the next method could not do.peekNext 在接口中 PeekableIntIterator