org.jgrapht.traverse

## Class CrossComponentIterator<V,E,D>

- java.lang.Object
- - org.jgrapht.traverse.AbstractGraphIterator<V,E>
  - - org.jgrapht.traverse.CrossComponentIterator<V,E,D>

- Type Parameters:
    `V` - vertex type
    `E` - edge type
    `D` - type of data associated to seen vertices
  All Implemented Interfaces:
    Iterator<V>, GraphIterator<V,E>
  Direct Known Subclasses:
    BreadthFirstIterator, ClosestFirstIterator, DepthFirstIterator, TopologicalOrderIterator

      public abstract class CrossComponentIterator<V,E,D>
      extends AbstractGraphIterator<V,E>

  Provides a cross-connected-component traversal functionality for iterator subclasses.
  Since:
    Jan 31, 2004
  Author:
    Barak Naveh

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `CrossComponentIterator.VisitColor` Standard vertex visit state enumeration.

  - ### Field Summary

    - ### Fields inherited from class org.jgrapht.traverse.AbstractGraphIterator

      `nListeners`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CrossComponentIterator(Graph<V,E> g, V startVertex)` Creates a new iterator for the specified graph.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract void` | `encounterVertex(V vertex, E edge)` Update data structures the first time we see a vertex.
    `protected abstract void` | `encounterVertexAgain(V vertex, E edge)` Called whenever we re-encounter a vertex.
    `protected void` | `finishVertex(V vertex)` Called when a vertex has been finished (meaning is dependent on traversal represented by subclass).
    `Graph<V,E>` | `getGraph()`
    `protected D` | `getSeenData(V vertex)` Access the data stored for a seen vertex.
    `boolean` | `hasNext()`
    `protected abstract boolean` | `isConnectedComponentExhausted()` Returns `true` if there are no more uniterated vertices in the currently iterated connected component; `false` otherwise.
    `protected boolean` | `isSeenVertex(Object vertex)` Determines whether a vertex has been seen yet by this traversal.
    `V` | `next()`
    `protected abstract V` | `provideNextVertex()` Returns the vertex to be returned in the following call to the iterator `next` method.
    `protected D` | `putSeenData(V vertex, D data)` Stores iterator-dependent data for a vertex that has been seen.

    - ### Methods inherited from class org.jgrapht.traverse.AbstractGraphIterator

      `addTraversalListener, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### 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==null` or does not contain `startVertex`

  - ### Method Detail

    - #### getGraph

          public Graph<V,E> getGraph()

      Returns:
        the graph being traversed

    - #### hasNext

          public boolean hasNext()

      See Also:
        `Iterator.hasNext()`

    - #### next

          public V next()

      See Also:
        `Iterator.next()`

    - #### 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(Object 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

Copyright © 2016. All rights reserved.