Class RangeIterator<K extends Comparable<K>,T extends CombinedValue<K>>

java.lang.Object
org.apache.cassandra.utils.AbstractGuavaIterator<T>
org.apache.cassandra.index.sasi.utils.RangeIterator<K,T>
All Implemented Interfaces:
com.google.common.collect.PeekingIterator<T>, Closeable, AutoCloseable, Iterator<T>
Direct Known Subclasses:
KeyRangeIterator, OnDiskIndexIterator, Operation, RangeIntersectionIterator.BounceIntersectionIterator, RangeIntersectionIterator.LookupIntersectionIterator, RangeIterator.Builder.EmptyRangeIterator, RangeUnionIterator, TermIterator, TokenTree.TokenTreeIterator

public abstract class RangeIterator<K extends Comparable<K>,T extends CombinedValue<K>> extends AbstractGuavaIterator<T> implements Closeable
  • Constructor Details

  • Method Details

    • getMinimum

      public final K getMinimum()
    • getCurrent

      public final K getCurrent()
    • getMaximum

      public final K getMaximum()
    • getCount

      public final long getCount()
    • skipTo

      public final T skipTo(K nextToken)
      When called, this iterators current position should be skipped forwards until finding either: 1) an element equal to or bigger than next 2) the end of the iterator
      Parameters:
      nextToken - value to skip the iterator forward until matching
      Returns:
      The next current token after the skip was performed
    • performSkipTo

      protected abstract void performSkipTo(K nextToken)
    • recomputeNext

      protected T recomputeNext()
    • tryToComputeNext

      protected boolean tryToComputeNext()
      Overrides:
      tryToComputeNext in class AbstractGuavaIterator<T extends CombinedValue<K>>
    • isOverlapping

      protected static <K extends Comparable<K>, D extends CombinedValue<K>> boolean isOverlapping(RangeIterator<K,D> a, RangeIterator<K,D> b)
    • isOverlapping

      protected static <K extends Comparable<K>, D extends CombinedValue<K>> boolean isOverlapping(K min, K max, RangeIterator<K,D> b)
      Ranges are overlapping the following cases: * When they have a common subrange: min b.current max b.max +---------|--------------+------------| b.current min max b.max |--------------+---------+------------| min b.current b.max max +----------|-------------|------------+ If either range is empty, they're disjoint.