public abstract static class BooleanBigListIterators.AbstractIndexBasedBigIterator
extends it.unimi.dsi.fastutil.booleans.AbstractBooleanIterator
As the abstract methods in this class are used in inner loops, it is generally a
good idea to override the class as final as to encourage the JVM to inline
them (or alternatively, override the abstract methods as final).
| Modifier and Type | Field and Description |
|---|---|
protected long |
lastReturned
The last returned index by a call to
BooleanIterator.next() or, if a list-iterator, {@link java.util.ListIterator#previous(). |
protected long |
minPos
The minimum pos can be, and is the logical start of the "range".
|
protected long |
pos
The current position index, the index of the item to be returned after the next call to
BooleanIterator.next(). |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractIndexBasedBigIterator(long minPos,
long initialPos) |
| Modifier and Type | Method and Description |
|---|---|
void |
forEachRemaining(it.unimi.dsi.fastutil.booleans.BooleanConsumer action) |
protected abstract boolean |
get(long location)
Get the item corresponding to the given index location.
|
protected abstract long |
getMaxPos()
The maximum pos can be, and is the logical end of the "range".
|
boolean |
hasNext() |
boolean |
nextBoolean() |
void |
remove() |
protected abstract void |
remove(long location)
Remove the item at the given index.
|
int |
skip(int n) |
long |
skip(long n) |
protected final long minPos
remove(long)),
so this is final.protected long pos
BooleanIterator.next().
This value will be between minPos and getMaxPos() (exclusive) (on a best effort, so concurrent
structural modifications outside this iterator may cause this to be violated, but that usually invalidates
iterators anyways). Thus pos being minPos + 2 would mean BooleanIterator.next()
was called twice and the next call will return the third element of this iterator.
protected long lastReturned
BooleanIterator.next() or, if a list-iterator, java.util.ListIterator#previous().
Is {@code -1} if no such call has occurred or a mutation has occurred through this iterator and no
advancement has been done.protected AbstractIndexBasedBigIterator(long minPos,
long initialPos)
protected abstract boolean get(long location)
Do not advance pos in this method; the default next method takes care of this.
The location given will be between minPos and getMaxPos() (exclusive).
Thus, a location of minPos + 2 would mean BooleanIterator.next() was called twice
and this method should return what the next call to BooleanIterator.next() should return.
protected abstract void remove(long location)
Do not modify pos in this method; the default #remove() method takes care of this.
This method should also do what is needed to track the change to the getMaxPos().
Usually this is accomplished by having this method call the parent Collection's appropriate remove
method, and having getMaxPos() track the parent collection's size64().
protected abstract long getMaxPos()
If pos is equal to the return of this method, this means the last element has been returned and the next call to BooleanIterator.next() will throw.
Usually set return the parent collection's size64(), but does not have to be
(for example, sublists and subranges).
public boolean hasNext()
public boolean nextBoolean()
public void remove()
public void forEachRemaining(it.unimi.dsi.fastutil.booleans.BooleanConsumer action)
public long skip(long n)
public int skip(int n)