Class CrossComponentIterator<V,​E,​D>

    • Constructor Detail

      • CrossComponentIterator

        public CrossComponentIterator​(Graph<V,​E> g)
        Creates a new iterator for the specified graph.
        Parameters:
        g - the graph to be iterated
        Throws:
        NullPointerException - if argument is null
      • CrossComponentIterator

        public CrossComponentIterator​(Graph<V,​E> g,
                                      V startVertex)
        Creates a new iterator for the specified graph. Iteration will start at the specified start vertex. If the specified start vertex is null, Iteration will start at an arbitrary graph vertex.
        Parameters:
        g - the graph to be iterated.
        startVertex - the vertex iteration to be started.
        Throws:
        IllegalArgumentException - if g does not contain startVertex
        NullPointerException - if g is null
      • CrossComponentIterator

        public CrossComponentIterator​(Graph<V,​E> g,
                                      Iterable<V> startVertices)
        Creates a new iterator for the specified graph. Iteration will start at the specified start vertices. If the specified start vertices is null, Iteration will start at an arbitrary graph vertex.
        Parameters:
        g - the graph to be iterated.
        startVertices - the vertices iteration to be started.
        Throws:
        IllegalArgumentException - if startVertices contains an element that is not a vertex of g
        NullPointerException - if g is null
    • Method Detail

      • hasNext

        public boolean hasNext()
      • next

        public V next()
      • getEntireGraphVertexIterator

        protected Iterator<V> getEntireGraphVertexIterator()
        Lazily instantiates entireGraphVertexIterator.
        Returns:
        iterator which provides start vertices for cross-component iteration
      • isConnectedComponentExhausted

        protected abstract boolean isConnectedComponentExhausted()
        Returns true if there are no more uniterated vertices in the currently iterated connected component; false otherwise.
        Returns:
        true if there are no more uniterated vertices in the currently iterated connected component; false otherwise.
      • encounterVertex

        protected abstract void encounterVertex​(V vertex,
                                                E edge)
        Update data structures the first time we see a vertex.
        Parameters:
        vertex - the vertex encountered
        edge - the edge via which the vertex was encountered, or null if the vertex is a starting point
      • provideNextVertex

        protected abstract V provideNextVertex()
        Returns the vertex to be returned in the following call to the iterator next method.
        Returns:
        the next vertex to be returned by this iterator.
      • getSeenData

        protected D getSeenData​(V vertex)
        Access the data stored for a seen vertex.
        Parameters:
        vertex - a vertex which has already been seen.
        Returns:
        data associated with the seen vertex or null if no data was associated with the vertex. A null return can also indicate that the vertex was explicitly associated with null.
      • isSeenVertex

        protected boolean isSeenVertex​(V vertex)
        Determines whether a vertex has been seen yet by this traversal.
        Parameters:
        vertex - vertex in question
        Returns:
        true if vertex has already been seen
      • encounterVertexAgain

        protected abstract void encounterVertexAgain​(V vertex,
                                                     E edge)
        Called whenever we re-encounter a vertex. The default implementation does nothing.
        Parameters:
        vertex - the vertex re-encountered
        edge - the edge via which the vertex was re-encountered
      • putSeenData

        protected D putSeenData​(V vertex,
                                D data)
        Stores iterator-dependent data for a vertex that has been seen.
        Parameters:
        vertex - a vertex which has been seen.
        data - data to be associated with the seen vertex.
        Returns:
        previous value associated with specified vertex or null if no data was associated with the vertex. A null return can also indicate that the vertex was explicitly associated with null.
      • finishVertex

        protected void finishVertex​(V vertex)
        Called when a vertex has been finished (meaning is dependent on traversal represented by subclass).
        Parameters:
        vertex - vertex which has been finished
      • selectOutgoingEdges

        protected Set<E> selectOutgoingEdges​(V vertex)
        Selects the outgoing edges for a given vertex based on the source vertex and other traversal state. The default implementation returns all outgoing edges.
        Parameters:
        vertex - vertex in question
        Returns:
        set of outgoing edges connected to the vertex