Class ArcLabelledNodeIterator

All Implemented Interfaces:
LongIterator, Iterator<Long>, PrimitiveIterator<Long,​LongConsumer>, PrimitiveIterator.OfLong

public abstract class ArcLabelledNodeIterator
extends NodeIterator
An iterator returning nodes, their successors and labels on the arcs.

The purpose of this abstract implementation is to override covariantly the return type of of NodeIterator.successors(), so that it has to be a ArcLabelledNodeIterator.LabelledArcIterator, and provide a general implementation of a new labelBigArray() method that returns the labels of the arcs going out of the current node as an array.

  • Constructor Details

    • ArcLabelledNodeIterator

      public ArcLabelledNodeIterator()
  • Method Details

    • successors

      public abstract ArcLabelledNodeIterator.LabelledArcIterator successors()
      Description copied from class: NodeIterator
      Returns a lazy iterator over the successors of the current node. The iteration terminates when -1 is returned.

      This implementation just wraps the array returned by NodeIterator.successorBigArray().

      successors in class NodeIterator
      a lazy iterator over the successors of the current node.
    • labelBigArray

      public Label[][] labelBigArray()
      Returns a reference to an array containing the labels of the arcs going out of the current node in the same order as the order in which the corresponding successors are returned by successors().

      The returned array may contain more entries than the outdegree of the current node. However, only those with indices from 0 (inclusive) to the outdegree of the current node (exclusive) contain valid data.

      This implementation just unwrap the iterator returned by successors() and writes in a newly allocated array copies of the labels returned by ArcLabelledNodeIterator.LabelledArcIterator.label().

      an array whose first elements are the labels of the arcs going out of the current node; the array must not be modified by the caller.
    • unwrap

      protected static Label[][] unwrap​(ArcLabelledNodeIterator.LabelledArcIterator iterator, long howMany)
      Returns a new array of labels filled with exactly howMany labels from the given iterator. Note that the iterator is required to have at least as many labels as needed.
      iterator - the iterator.
      howMany - the number of labels.
      the new array where labels are copied.
    • copy

      public ArcLabelledNodeIterator copy​(long upperBound)
      Creates a copy of this iterator that will never return nodes ≥ the specified bound; the copy must be accessible by a different thread. Optional operation (it should be implemented by all classes that allow to scan the graph more than once).

      This implementation just throws an UnsupportedOperationException. It should be kept in sync with the result of ImmutableGraph.hasCopiableIterators().

      copy in class NodeIterator
      upperBound - the upper bound.
      a copy of this iterator, with the given upper bound.