java.lang.Object
org.jgrapht.graph.specifics.DirectedSpecifics<V,E>
 
org.jgrapht.graph.specifics.FastLookupDirectedSpecifics<V,E> 
- Type Parameters:
- V- the graph vertex type
- E- the graph edge type
- All Implemented Interfaces:
- Serializable,- Specifics<V,- E> 
Fast implementation of DirectedSpecifics. This class uses additional data structures to improve
 the performance of methods which depend on edge retrievals, e.g. getEdge(V u, V v),
 containsEdge(V u, V v),addEdge(V u, V v). A disadvantage is an increase in memory consumption. If
 memory utilization is an issue, use a 
DirectedSpecifics instead.- Author:
- Joris Kinable
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionMaps a pair of vertices <u,v> to a set of edges {(u,v)}.Fields inherited from class org.jgrapht.graph.specifics.DirectedSpecificsedgeSetFactory, graph, vertexMap
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionbooleanaddEdgeToTouchingVertices(V sourceVertex, V targetVertex, E e) Adds the specified edge to the edge containers of its source and target vertices.booleanaddEdgeToTouchingVerticesIfAbsent(V sourceVertex, V targetVertex, E e) Adds the specified edge to the edge containers of its source and target vertices only if the edge is not already in the graph.protected voidaddToIndex(V sourceVertex, V targetVertex, E e) Add an edge to the index.createEdgeToTouchingVerticesIfAbsent(V sourceVertex, V targetVertex, Supplier<E> edgeSupplier) Creates an edge given an edge supplier and adds it to the edge containers of its source and target vertices only if the graph does not contain other edges with the same source and target vertices.getAllEdges(V sourceVertex, V targetVertex) Returns a set of all edges connecting source vertex to target vertex if such vertices exist in this graph.Returns an edge connecting source vertex to target vertex if such vertices and such edge exist in this graph.voidremoveEdgeFromTouchingVertices(V sourceVertex, V targetVertex, E e) Removes the specified edge from the edge containers of its source and target vertices.protected voidremoveFromIndex(V sourceVertex, V targetVertex, E e) Remove an edge from the index.Methods inherited from class org.jgrapht.graph.specifics.DirectedSpecificsaddVertex, degreeOf, edgesOf, getEdgeContainer, getVertexSet, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf
- 
Field Details- 
touchingVerticesToEdgeMapMaps a pair of vertices <u,v> to a set of edges {(u,v)}. In case of a multigraph, all edges which touch both u and v are included in the set.
 
- 
- 
Constructor Details- 
FastLookupDirectedSpecificspublic FastLookupDirectedSpecifics(Graph<V, E> graph, Map<V, DirectedEdgeContainer<V, E>> vertexMap, Map<Pair<V, V>, Set<E>> touchingVerticesToEdgeMap, EdgeSetFactory<V, E> edgeSetFactory) Construct a new fast lookup directed specifics.- Parameters:
- graph- the graph for which these specifics are for
- vertexMap- map for the storage of vertex edge sets. Needs to have a predictable iteration order.
- touchingVerticesToEdgeMap- Additional map for caching. No need for a predictable iteration order.
- edgeSetFactory- factory for the creation of vertex edge sets
 
 
- 
- 
Method Details- 
getAllEdgesDescription copied from class:DirectedSpecificsReturns a set of all edges connecting source vertex to target vertex if such vertices exist in this graph. If any of the vertices does not exist or isnull, returnsnull. If both vertices exist but no edges found, returns an empty set.- Specified by:
- getAllEdgesin interface- Specifics<V,- E> 
- Overrides:
- getAllEdgesin class- DirectedSpecifics<V,- E> 
- Parameters:
- sourceVertex- source vertex of the edge.
- targetVertex- target vertex of the edge.
- Returns:
- a set of all edges connecting source vertex to target vertex.
 
- 
getEdgeDescription copied from class:DirectedSpecificsReturns an edge connecting source vertex to target vertex if such vertices and such edge exist in this graph. Otherwise returnsnull. If any of the specified vertices isnullreturnsnullIn undirected graphs, the returned edge may have its source and target vertices in the opposite order. 
- 
addEdgeToTouchingVerticesDescription copied from class:DirectedSpecificsAdds the specified edge to the edge containers of its source and target vertices.- Specified by:
- addEdgeToTouchingVerticesin interface- Specifics<V,- E> 
- Overrides:
- addEdgeToTouchingVerticesin class- DirectedSpecifics<V,- E> 
- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- e- the edge
- Returns:
- true if the edge was added, false otherwise
 
- 
addEdgeToTouchingVerticesIfAbsentDescription copied from interface:SpecificsAdds the specified edge to the edge containers of its source and target vertices only if the edge is not already in the graph.- Specified by:
- addEdgeToTouchingVerticesIfAbsentin interface- Specifics<V,- E> 
- Overrides:
- addEdgeToTouchingVerticesIfAbsentin class- DirectedSpecifics<V,- E> 
- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- e- the edge
- Returns:
- true if the edge was added, false otherwise
 
- 
createEdgeToTouchingVerticesIfAbsentpublic E createEdgeToTouchingVerticesIfAbsent(V sourceVertex, V targetVertex, Supplier<E> edgeSupplier) Description copied from interface:SpecificsCreates an edge given an edge supplier and adds it to the edge containers of its source and target vertices only if the graph does not contain other edges with the same source and target vertices.- Specified by:
- createEdgeToTouchingVerticesIfAbsentin interface- Specifics<V,- E> 
- Overrides:
- createEdgeToTouchingVerticesIfAbsentin class- DirectedSpecifics<V,- E> 
- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- edgeSupplier- the function which will create the edge
- Returns:
- the newly created edge or null if an edge with the same source and target vertices was already present
 
- 
removeEdgeFromTouchingVerticesDescription copied from class:DirectedSpecificsRemoves the specified edge from the edge containers of its source and target vertices.- Specified by:
- removeEdgeFromTouchingVerticesin interface- Specifics<V,- E> 
- Overrides:
- removeEdgeFromTouchingVerticesin class- DirectedSpecifics<V,- E> 
- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- e- the edge
 
- 
addToIndexAdd an edge to the index.- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- e- the edge
 
- 
removeFromIndexRemove an edge from the index.- Parameters:
- sourceVertex- the source vertex
- targetVertex- the target vertex
- e- the edge
 
 
-