N - Node parameter typeV - Value parameter typeclass ConfigurableValueGraph<N,V> extends AbstractValueGraph<N,V>
ValueGraph that supports the options supplied by AbstractGraphBuilder.
This class maintains a map of nodes to GraphConnections.
Collection-returning accessors return unmodifiable views: the view returned will reflect changes to the graph (if the graph is mutable) but may not be modified by the user.
The time complexity of all collection-returning accessors is O(1), since views are returned.
| Modifier and Type | Field and Description |
|---|---|
private boolean |
allowsSelfLoops |
protected long |
edgeCount |
private boolean |
isDirected |
protected MapIteratorCache<N,GraphConnections<N,V>> |
nodeConnections |
private ElementOrder<N> |
nodeOrder |
| Constructor and Description |
|---|
ConfigurableValueGraph(AbstractGraphBuilder<? super N> builder)
Constructs a graph with the properties specified in
builder. |
ConfigurableValueGraph(AbstractGraphBuilder<? super N> builder,
java.util.Map<N,GraphConnections<N,V>> nodeConnections,
long edgeCount)
Constructs a graph with the properties specified in
builder, initialized with the given
node map. |
| Modifier and Type | Method and Description |
|---|---|
java.util.Set<N> |
adjacentNodes(N node)
Returns the nodes which have an incident edge in common with
node in this graph. |
boolean |
allowsSelfLoops()
Returns true if this graph allows self-loops (edges that connect a node to itself).
|
protected GraphConnections<N,V> |
checkedConnections(N node) |
protected boolean |
containsNode(N node) |
protected long |
edgeCount()
Returns the number of edges in this graph; used to calculate the size of
AbstractBaseGraph.edges(). |
V |
edgeValueOrDefault(N nodeU,
N nodeV,
V defaultValue)
Returns the value of the edge connecting
nodeU to nodeV, if one is present;
otherwise, returns defaultValue. |
boolean |
hasEdgeConnecting(N nodeU,
N nodeV)
Returns true if there is an edge directly connecting
nodeU to nodeV. |
boolean |
isDirected()
Returns true if the edges in this graph are directed.
|
ElementOrder<N> |
nodeOrder()
Returns the order of iteration for the elements of
ValueGraph.nodes(). |
java.util.Set<N> |
nodes()
Returns all nodes in this graph, in the order specified by
ValueGraph.nodeOrder(). |
java.util.Set<N> |
predecessors(N node)
Returns all nodes in this graph adjacent to
node which can be reached by traversing
node's incoming edges against the direction (if any) of the edge. |
java.util.Set<N> |
successors(N node)
Returns all nodes in this graph adjacent to
node which can be reached by traversing
node's outgoing edges in the direction (if any) of the edge. |
asGraph, edgeValue, equals, hashCode, toStringdegree, edges, incidentEdges, inDegree, outDegreeclone, finalize, getClass, notify, notifyAll, wait, wait, waitdegree, edges, incidentEdges, inDegree, outDegreeprivate final boolean isDirected
private final boolean allowsSelfLoops
private final ElementOrder<N> nodeOrder
protected final MapIteratorCache<N,GraphConnections<N,V>> nodeConnections
protected long edgeCount
ConfigurableValueGraph(AbstractGraphBuilder<? super N> builder)
builder.ConfigurableValueGraph(AbstractGraphBuilder<? super N> builder, java.util.Map<N,GraphConnections<N,V>> nodeConnections, long edgeCount)
builder, initialized with the given
node map.public java.util.Set<N> nodes()
ValueGraphValueGraph.nodeOrder().public boolean isDirected()
ValueGraphsource node to a target node, while
undirected edges connect a pair of nodes to each other.public boolean allowsSelfLoops()
ValueGraphIllegalArgumentException.public ElementOrder<N> nodeOrder()
ValueGraphValueGraph.nodes().public java.util.Set<N> adjacentNodes(N node)
ValueGraphnode in this graph.public java.util.Set<N> predecessors(N node)
ValueGraphnode which can be reached by traversing
node's incoming edges against the direction (if any) of the edge.
In an undirected graph, this is equivalent to ValueGraph.adjacentNodes(Object).
public java.util.Set<N> successors(N node)
ValueGraphnode which can be reached by traversing
node's outgoing edges in the direction (if any) of the edge.
In an undirected graph, this is equivalent to ValueGraph.adjacentNodes(Object).
This is not the same as "all nodes reachable from node by following outgoing
edges". For that functionality, see Graphs.reachableNodes(Graph, Object).
public boolean hasEdgeConnecting(N nodeU, N nodeV)
BaseGraphnodeU to nodeV. This is
equivalent to nodes().contains(nodeU) && successors(nodeU).contains(nodeV).
In an undirected graph, this is equal to hasEdgeConnecting(nodeV, nodeU).
hasEdgeConnecting in interface BaseGraph<N>hasEdgeConnecting in interface ValueGraph<N,V>hasEdgeConnecting in class AbstractBaseGraph<N>public V edgeValueOrDefault(N nodeU, N nodeV, V defaultValue)
ValueGraphnodeU to nodeV, if one is present;
otherwise, returns defaultValue.
In an undirected graph, this is equal to edgeValueOrDefault(nodeV, nodeU,
defaultValue).
protected long edgeCount()
AbstractBaseGraphAbstractBaseGraph.edges(). This
implementation requires O(|N|) time. Classes extending this one may manually keep track of the
number of edges as the graph is updated, and override this method for better performance.edgeCount in class AbstractBaseGraph<N>protected final GraphConnections<N,V> checkedConnections(N node)
protected final boolean containsNode(N node)