Package com.complexible.common.collect
Class AbstractSkippingIterator<T>
java.lang.Object
com.complexible.common.collect.AbstractSkippingIterator<T>
- All Implemented Interfaces:
CloseableIterator<T>,PeekingSkippingIterator<T>,ResettableIterator<T>,SkippingIterator<T>,com.google.common.collect.PeekingIterator<T>,AutoCloseable,Iterator<T>
- Direct Known Subclasses:
MarkResetSkippingIterator
public abstract class AbstractSkippingIterator<T>
extends Object
implements PeekingSkippingIterator<T>, CloseableIterator<T>
Abstract SkippingIterator implementation to help with concrete implementations. The remove function of
this implementation throws UnsupportedOperationException and its size estimate is
unknown.
- Version:
- 2.2.1
- Author:
- Evren Sirin, Pavel Klinov, Michael Grove
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.complexible.common.base.CloseableIterator
CloseableIterator.AbstractCloseableIterator<T>, CloseableIterator.DelegatingCloseableIterator<T>, CloseableIterator.EmptyCloseableIterator<T> -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Comparator<T> The comparator which defines the order for skippingFields inherited from interface com.complexible.common.collect.SkippingIterator
UNKNOWN_SIZE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoidclose()Returns the comparator for this iterator that specifies the order in which the elements are returned.protected abstract TReturn the next element to be returned by the iteratorprotected abstract TcomputeSkipTo(T theTarget) Returns the element that this iteration has skipped to ornullif it ran off the end.protected TcomputeSkipTo(T theTarget, T theBound) protected final TSignal that you're done iterating.longReturns the estimated size of this iterator without advancing the iterator orSkippingIterator.UNKNOWN_SIZEif the estimate is not known.final booleanhasNext()protected booleanisClosed()booleanisLessOrEqualThan(T theElement, T theBound) final Tnext()final Tpeek()Implementation of peeking to the next item returned by the iterator.protected abstract voidvoidremove()final voidreset()Resets the iterator to the beginning so the followingIterator.next()call will return the first element in this iteration.protected final voidfinal booleanMoves the iterators position to the next element which is greater than or equal totheElement.final booleanSame contract asSkippingIterator.skipTo(Object)but skipping is bounded: if the implementation can determine that the next element after target is greater than the bound, it can return false.protected voidvalidateSkipTarget(T theTarget) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
mComparator
The comparator which defines the order for skipping
-
-
Constructor Details
-
AbstractSkippingIterator
-
-
Method Details
-
comparator
Returns the comparator for this iterator that specifies the order in which the elements are returned.- Specified by:
comparatorin interfaceSkippingIterator<T>
-
estimatedSize
public long estimatedSize()Returns the estimated size of this iterator without advancing the iterator orSkippingIterator.UNKNOWN_SIZEif the estimate is not known. The estimate is for the whole iterator and will not change after the iterator is advanced. There is no guarantee about the accuracy of the estimate.- Specified by:
estimatedSizein interfaceSkippingIterator<T>
-
remove
public void remove() -
computeNext
Return the next element to be returned by the iterator- Returns:
- the next element
-
computeSkipTo
Returns the element that this iteration has skipped to ornullif it ran off the end.- Parameters:
theTarget- the skipping target- Returns:
- the first element that is greater or equal to the skipping
target, or
nullif it doesn't exist.
-
computeSkipTo
-
isLessOrEqualThan
-
next
-
endOfData
Signal that you're done iterating.- Returns:
- nothing, the result is ignored
-
hasNext
public final boolean hasNext() -
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseableIterator<T>
-
peek
Implementation of peeking to the next item returned by the iterator. Anyone wishing to expose this method simply need to also implement thePeekingIteratorinterface.- Specified by:
peekin interfacecom.google.common.collect.PeekingIterator<T>- Returns:
- the next element to be returned
-
skipTo
Description copied from interface:SkippingIteratorMoves the iterators position to the next element which is greater than or equal totheElement.- Specified by:
skipToin interfaceSkippingIterator<T>- Returns:
- true, if such an element exists (in which case the
Iterator.next()call will return it), false otherwise
-
skipTo
Same contract asSkippingIterator.skipTo(Object)but skipping is bounded: if the implementation can determine that the next element after target is greater than the bound, it can return false. In other words, if the method returns false, no element between the target (incl.) and the bound (incl.) exists. If the method returns true, the next element is definitely greater or equal than the target, but may exceed the bound. If the method returns false, there's no guarantee on the state of the iterator. If it needs to be reused, it must be first reset.- Specified by:
skipToin interfaceSkippingIterator<T>- Parameters:
theElement- the targettheBound- the bound. null means no upper bound.- Returns:
- true, if an element that is greater than or equal to
theElementbut less than or equal totheBoundexists.
-
validateSkipTarget
-
reset
public final void reset()Resets the iterator to the beginning so the followingIterator.next()call will return the first element in this iteration.- Specified by:
resetin interfaceResettableIterator<T>
-
isClosed
protected boolean isClosed() -
assertOpen
protected void assertOpen() -
resetState
protected final void resetState() -
performReset
protected abstract void performReset()
-