public class SpoolingMarkResetIterator<T extends Copyable<T>> extends AbstractSkippingIterator<T> implements MarkResetIterator<T>
MarkResetSkippingIterator
with bounded spooling: once the mark(Copyable)
method has been called, the iterator
will start spooling until one of the following conditions occurs:
1) the spooling threshold is reached, in which case the iterator switches to the skipping-based
mark-reset
behavior.
2) the resetToMark()
method is called, in which case the iterator starts returning the spooled elements.
Note: this implementation should only be used when marking the last returned element. Otherwise it is not able to retrieve the elements that are
between the mark and the current position after calling the resetToMark()
method.
Similarly to MarkResetSkippingIterator
this implementation does not close the base iterator.CloseableIterator.AbstractCloseableIterator<T>, CloseableIterator.DelegatingCloseableIterator<T>, CloseableIterator.EmptyCloseableIterator<T>
mComparator
UNKNOWN_SIZE
Constructor and Description |
---|
SpoolingMarkResetIterator(SkippingIterator<T> theIterator,
int theSpoolLimit) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
protected T |
computeNext()
Return the next element to be returned by the iterator
|
protected T |
computeSkipTo(T theTarget)
Returns the element that this iteration has skipped to or
null if
it ran off the end. |
MarkResetIterator<T> |
copy()
Create a deep copy of the object which does not share any references with the original.
|
void |
mark(T mark)
Creates a mark from the provided element.
|
void |
performReset() |
void |
resetToMark()
Rewinds the position of the iterator to the previously marked element.
|
assertOpen, comparator, computeSkipTo, endOfData, estimatedSize, hasNext, isClosed, isLessOrEqualThan, next, peek, remove, reset, resetState, skipTo, skipTo, validateSkipTarget
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
empty
reset
closeAfterLast, closeQuietly, collect, concat, concat, concat, filter, first, isEmpty, limit, map, offset, onClose, singleton, size, toCloseable, toCloseable, toCloseable, toList, toSet, transform
forEachRemaining, hasNext, next, remove
public SpoolingMarkResetIterator(SkippingIterator<T> theIterator, int theSpoolLimit)
protected T computeNext()
AbstractSkippingIterator
computeNext
in class AbstractSkippingIterator<T extends Copyable<T>>
protected T computeSkipTo(T theTarget)
AbstractSkippingIterator
null
if
it ran off the end.computeSkipTo
in class AbstractSkippingIterator<T extends Copyable<T>>
theTarget
- the skipping targetnull
if it doesn't exist.public void mark(T mark)
MarkResetIterator
mark
in interface MarkResetIterator<T extends Copyable<T>>
mark
- the element to serve as a markpublic void resetToMark()
MarkResetIterator
resetToMark
in interface MarkResetIterator<T extends Copyable<T>>
public void close()
AbstractSkippingIterator
close
in interface CloseableIterator<T extends Copyable<T>>
close
in interface AutoCloseable
close
in class AbstractSkippingIterator<T extends Copyable<T>>
public void performReset()
performReset
in class AbstractSkippingIterator<T extends Copyable<T>>
public MarkResetIterator<T> copy()
Copyable
Copyright © 2010-2016 Stardog Union. All Rights Reserved.