Class ArcLabelledNodeIterator

  • All Implemented Interfaces:
    it.unimi.dsi.fastutil.ints.IntIterator, java.util.Iterator<java.lang.Integer>, java.util.PrimitiveIterator<java.lang.Integer,​java.util.function.IntConsumer>, java.util.PrimitiveIterator.OfInt

    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 labelArray() method that returns the labels of the arcs going out of the current node as an array.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  ArcLabelledNodeIterator.LabelledArcIterator
      An iterator returning successor and the labels of the arcs toward them.
      • Nested classes/interfaces inherited from interface java.util.PrimitiveIterator

        java.util.PrimitiveIterator.OfDouble, java.util.PrimitiveIterator.OfInt, java.util.PrimitiveIterator.OfLong
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      ArcLabelledNodeIterator copy​(int upperBound)
      Creates a copy of this iterator that will never return nodes ≥ the specified bound; the copy must be accessible by a different thread.
      Label[] labelArray()
      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().
      abstract ArcLabelledNodeIterator.LabelledArcIterator successors()
      Returns a lazy iterator over the successors of the current node.
      protected static Label[] unwrap​(ArcLabelledNodeIterator.LabelledArcIterator iterator, int howMany)
      Returns a new array of labels filled with exactly howMany labels from the given iterator.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface it.unimi.dsi.fastutil.ints.IntIterator

        forEachRemaining, forEachRemaining, next, nextInt, skip
      • Methods inherited from interface java.util.Iterator

        hasNext, remove
      • Methods inherited from interface java.util.PrimitiveIterator.OfInt

        forEachRemaining
    • Constructor Detail

      • ArcLabelledNodeIterator

        public ArcLabelledNodeIterator()
    • Method Detail

      • labelArray

        public Label[] labelArray()
        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.

        Returns:
        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.
        Implementation Specification:
        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().
      • unwrap

        protected static Label[] unwrap​(ArcLabelledNodeIterator.LabelledArcIterator iterator,
                                        int 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.
        Parameters:
        iterator - the iterator.
        howMany - the number of labels.
        Returns:
        the new array where labels are copied.
      • copy

        public ArcLabelledNodeIterator copy​(int 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).
        Overrides:
        copy in class NodeIterator
        Parameters:
        upperBound - the upper bound.
        Returns:
        a copy of this iterator, with the given upper bound.
        Implementation Specification:
        This implementation just throws an UnsupportedOperationException. It should be kept in sync with the result of ImmutableGraph.hasCopiableIterators().