N - Node parameter typeV - Value parameter typeclass StandardValueGraph<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 |
(package private) long |
edgeCount |
private boolean |
isDirected |
(package private) MapIteratorCache<N,GraphConnections<N,V>> |
nodeConnections |
private ElementOrder<N> |
nodeOrder |
| Constructor and Description |
|---|
StandardValueGraph(AbstractGraphBuilder<? super N> builder)
Constructs a graph with the properties specified in
builder. |
StandardValueGraph(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).
|
private GraphConnections<N,V> |
checkedConnections(N node) |
(package private) 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(EndpointPair<N> endpoints,
V defaultValue)
Returns the value of the edge that connects
endpoints (in the order, if any, specified
by endpoints), if one is present; otherwise, returns defaultValue. |
V |
edgeValueOrDefault(N nodeU,
N nodeV,
V defaultValue)
Returns the value of the edge that connects
nodeU to nodeV, if one is present;
otherwise, returns defaultValue. |
private V |
edgeValueOrDefaultInternal(N nodeU,
N nodeV,
V defaultValue) |
boolean |
hasEdgeConnecting(EndpointPair<N> endpoints)
Returns true if there is an edge that directly connects
endpoints (in the order, if
any, specified by endpoints). |
boolean |
hasEdgeConnecting(N nodeU,
N nodeV)
Returns true if there is an edge that directly connects
nodeU to nodeV. |
private boolean |
hasEdgeConnectingInternal(N nodeU,
N nodeV) |
java.util.Set<EndpointPair<N>> |
incidentEdges(N node)
Returns the edges in this graph whose endpoints include
node. |
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, edgeValue, equals, hashCode, toStringdegree, edges, incidentEdgeOrder, inDegree, isOrderingCompatible, outDegree, validateEndpointsclone, finalize, getClass, notify, notifyAll, wait, wait, waitdegree, edges, incidentEdgeOrder, inDegree, outDegreeprivate final boolean isDirected
private final boolean allowsSelfLoops
private final ElementOrder<N> nodeOrder
final MapIteratorCache<N,GraphConnections<N,V>> nodeConnections
long edgeCount
StandardValueGraph(AbstractGraphBuilder<? super N> builder)
builder.StandardValueGraph(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.
This is equal to the union of ValueGraph.predecessors(Object) and ValueGraph.successors(Object).
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 java.util.Set<EndpointPair<N>> incidentEdges(N node)
BaseGraphnode.
This is equal to the union of incoming and outgoing edges.
incidentEdges in interface BaseGraph<N>incidentEdges in interface ValueGraph<N,V>incidentEdges in class AbstractBaseGraph<N>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 boolean hasEdgeConnecting(EndpointPair<N> endpoints)
BaseGraphendpoints (in the order, if
any, specified by endpoints). This is equivalent to edges().contains(endpoints).
Unlike the other EndpointPair-accepting methods, this method does not throw if the
endpoints are unordered; it simply returns false. This is for consistency with the behavior of
Collection#contains(Object) (which does not generally throw if the object cannot be
present in the collection), and the desire to have this method's behavior be compatible with
edges().contains(endpoints).
hasEdgeConnecting in interface BaseGraph<N>hasEdgeConnecting in interface ValueGraph<N,V>hasEdgeConnecting in class AbstractBaseGraph<N>@CheckForNull public V edgeValueOrDefault(N nodeU, N nodeV, @CheckForNull V defaultValue)
ValueGraphnodeU to nodeV, if one is present;
otherwise, returns defaultValue.
In an undirected graph, this is equal to edgeValueOrDefault(nodeV, nodeU,
defaultValue).
@CheckForNull public V edgeValueOrDefault(EndpointPair<N> endpoints, @CheckForNull V defaultValue)
ValueGraphendpoints (in the order, if any, specified
by endpoints), if one is present; otherwise, returns defaultValue.
If this graph is directed, the endpoints must be ordered.
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>private final GraphConnections<N,V> checkedConnections(N node)
final boolean containsNode(@CheckForNull
N node)