java.lang.Object
org.jgrapht.traverse.AbstractGraphIterator<V,E>
org.jgrapht.traverse.CrossComponentIterator<V,E,D>
 Type Parameters:
V
 vertex typeE
 edge typeD
 type of data associated to seen vertices
 All Implemented Interfaces:
Iterator<V>
,GraphIterator<V,
E>
 Direct Known Subclasses:
BreadthFirstIterator
,ClosestFirstIterator
,DepthFirstIterator
Provides a crossconnectedcomponent traversal functionality for iterator subclasses.
 Author:
 Barak Naveh

Field Summary
Fields inherited from class org.jgrapht.traverse.AbstractGraphIterator
crossComponentTraversal, graph, nListeners, reusableEdgeEvent, reusableVertexEvent, reuseEvents

Constructor Summary
ConstructorDescriptionCreates a new iterator for the specified graph.Creates a new iterator for the specified graph.CrossComponentIterator
(Graph<V, E> g, V startVertex) Creates a new iterator for the specified graph. 
Method Summary
Modifier and TypeMethodDescriptionprotected 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 reencounter a vertex.protected void
finishVertex
(V vertex) Called when a vertex has been finished (meaning is dependent on traversal represented by subclass).Lazily instantiatesentireGraphVertexIterator
.protected D
getSeenData
(V vertex) Access the data stored for a seen vertex.boolean
hasNext()
protected abstract boolean
Returnstrue
if there are no more uniterated vertices in the currently iterated connected component;false
otherwise.protected boolean
isSeenVertex
(V vertex) Determines whether a vertex has been seen yet by this traversal.next()
protected abstract V
Returns the vertex to be returned in the following call to the iteratornext
method.protected D
putSeenData
(V vertex, D data) Stores iteratordependent data for a vertex that has been seen.selectOutgoingEdges
(V vertex) Selects the outgoing edges for a given vertex based on the source vertex and other traversal state.Methods inherited from class org.jgrapht.traverse.AbstractGraphIterator
addTraversalListener, createEdgeTraversalEvent, createVertexTraversalEvent, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, getGraph, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining

Constructor Details

CrossComponentIterator
Creates a new iterator for the specified graph. Parameters:
g
 the graph to be iterated

CrossComponentIterator
Creates a new iterator for the specified graph. Iteration will start at the specified start vertex. If the specified start vertex isnull
, Iteration will start at an arbitrary graph vertex. Parameters:
g
 the graph to be iterated.startVertex
 the vertex iteration to be started. Throws:
IllegalArgumentException
 ifg==null
or does not containstartVertex

CrossComponentIterator
Creates a new iterator for the specified graph. Iteration will start at the specified start vertices. If the specified start vertices isnull
, Iteration will start at an arbitrary graph vertex. Parameters:
g
 the graph to be iterated.startVertices
 the vertices iteration to be started. Throws:
IllegalArgumentException
 ifg==null
or does not containstartVertex


Method Details

hasNext
public boolean hasNext() 
next

getEntireGraphVertexIterator
Lazily instantiatesentireGraphVertexIterator
. Returns:
 iterator which provides start vertices for crosscomponent iteration

isConnectedComponentExhausted
protected abstract boolean isConnectedComponentExhausted()Returnstrue
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
Update data structures the first time we see a vertex. Parameters:
vertex
 the vertex encounterededge
 the edge via which the vertex was encountered, or null if the vertex is a starting point

provideNextVertex
Returns the vertex to be returned in the following call to the iteratornext
method. Returns:
 the next vertex to be returned by this iterator.

getSeenData
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. Anull
return can also indicate that the vertex was explicitly associated withnull
.

isSeenVertex
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
Called whenever we reencounter a vertex. The default implementation does nothing. Parameters:
vertex
 the vertex reencounterededge
 the edge via which the vertex was reencountered

putSeenData
Stores iteratordependent 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. Anull
return can also indicate that the vertex was explicitly associated withnull
.

finishVertex
Called when a vertex has been finished (meaning is dependent on traversal represented by subclass). Parameters:
vertex
 vertex which has been finished

selectOutgoingEdges
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
