Package 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 typeE- edge typeD- type of data associated to seen vertices
- All Implemented Interfaces:
java.util.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 Description protected static classCrossComponentIterator.VisitColorStandard vertex visit state enumeration.
-
Field Summary
-
Fields inherited from class org.jgrapht.traverse.AbstractGraphIterator
nListeners
-
-
Constructor Summary
Constructors Constructor Description CrossComponentIterator(Graph<V,E> g, V startVertex)Creates a new iterator for the specified graph.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voidencounterVertex(V vertex, E edge)Update data structures the first time we see a vertex.protected abstract voidencounterVertexAgain(V vertex, E edge)Called whenever we re-encounter a vertex.protected voidfinishVertex(V vertex)Called when a vertex has been finished (meaning is dependent on traversal represented by subclass).Graph<V,E>getGraph()protected DgetSeenData(V vertex)Access the data stored for a seen vertex.booleanhasNext()protected abstract booleanisConnectedComponentExhausted()Returns true if there are no more uniterated vertices in the currently iterated connected component; false otherwise.protected booleanisSeenVertex(java.lang.Object vertex)Determines whether a vertex has been seen yet by this traversal.Vnext()protected abstract VprovideNextVertex()Returns the vertex to be returned in the following call to the iteratornextmethod.protected DputSeenData(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
-
-
-
-
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 isnull, Iteration will start at an arbitrary graph vertex.- Parameters:
g- the graph to be iterated.startVertex- the vertex iteration to be started.- Throws:
java.lang.IllegalArgumentException- ifg==nullor does not containstartVertex
-
-
Method Detail
-
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 encounterededge- 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 iteratornextmethod.- 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
nullif no data was associated with the vertex. Anullreturn can also indicate that the vertex was explicitly associated withnull.
-
isSeenVertex
protected boolean isSeenVertex(java.lang.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-encounterededge- 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
nullif no data was associated with the vertex. Anullreturn can also indicate that the vertex was explicitly associated withnull.
-
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
-
-