Class ReverseValueIterator<Concrete extends ReverseValueIterator<Concrete>>

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    @NotThreadSafe
    public class ReverseValueIterator<Concrete extends ReverseValueIterator<Concrete>>
    extends Walker<Concrete>
    Thread-unsafe reverse value iterator for on-disk tries. Uses the assumptions of Walker.

    The main utility of this class is the nextPayloadedNode() method, which lists all nodes that contain a payload within the requested bounds. The treatment of the bounds is non-standard (see ReverseValueIterator(Rebufferer, long, ByteComparable, ByteComparable, boolean)), necessary to properly walk tries of prefixes and separators.

    • Constructor Detail

      • ReverseValueIterator

        protected ReverseValueIterator​(Rebufferer source,
                                       long root)
      • ReverseValueIterator

        protected ReverseValueIterator​(Rebufferer source,
                                       long root,
                                       ByteComparable start,
                                       ByteComparable end,
                                       boolean admitPrefix)
        Constrained iterator. The end position is always treated as inclusive, and we have two possible treatments for the start:
        • When admitPrefix=false, exact matches and any prefixes of the start are excluded.
        • When admitPrefix=true, the longest prefix of the start present in the trie is also included, provided that there is no entry in the trie between that prefix and the start. An exact match also satisfies this and is included.
        This behaviour is shared with the forward counterpart ValueIterator.
    • Method Detail

      • nextPayloadedNode

        protected long nextPayloadedNode()
        Returns the position of the next node with payload contained in the iterated span.