Class Cursor<K,V>

java.lang.Object
org.h2.mvstore.Cursor<K,V>
Type Parameters:
K - the key type
V - the value type
All Implemented Interfaces:
Iterator<K>

public final class Cursor<K,V> extends Object implements Iterator<K>
A cursor to iterate over elements in ascending or descending order.
  • Field Details

    • reverse

      private final boolean reverse
    • to

      private final K to
    • cursorPos

      private CursorPos<K,V> cursorPos
    • keeper

      private CursorPos<K,V> keeper
    • current

      private K current
    • last

      private K last
    • lastValue

      private V lastValue
    • lastPage

      private Page<K,V> lastPage
  • Constructor Details

    • Cursor

      public Cursor(RootReference<K,V> rootReference, K from, K to)
    • Cursor

      public Cursor(RootReference<K,V> rootReference, K from, K to, boolean reverse)
      Parameters:
      rootReference - of the tree
      from - starting key (inclusive), if null start from the first / last key
      to - ending key (inclusive), if null there is no boundary
      reverse - true if tree should be iterated in key's descending order
  • Method Details

    • hasNext

      public boolean hasNext()
      Specified by:
      hasNext in interface Iterator<K>
    • next

      public K next()
      Specified by:
      next in interface Iterator<K>
    • getKey

      public K getKey()
      Get the last read key if there was one.
      Returns:
      the key or null
    • getValue

      public V getValue()
      Get the last read value if there was one.
      Returns:
      the value or null
    • getPage

      Page<K,V> getPage()
      Get the page where last retrieved key is located.
      Returns:
      the page
    • skip

      public void skip(long n)
      Skip over that many entries. This method is relatively fast (for this map implementation) even if many entries need to be skipped.
      Parameters:
      n - the number of entries to skip
    • traverseDown

      static <K, V> CursorPos<K,V> traverseDown(Page<K,V> page, K key, boolean reverse)
      Fetch the next entry that is equal or larger than the given key, starting from the given page. This method returns the path.
      Type Parameters:
      K - key type
      V - value type
      Parameters:
      page - to start from as a root
      key - to search for, null means search for the first available key
      reverse - true if traversal is in reverse direction, false otherwise
      Returns:
      CursorPos representing path from the entry found, or from insertion point if not, all the way up to to the root page provided
    • upperBound

      private static <K, V> int upperBound(Page<K,V> page)