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(java.lang.Object 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(java.lang.Object node) |
protected boolean |
containsNode(java.lang.Object node) |
protected long |
edgeCount()
Returns the number of edges in this graph; used to calculate the size of
AbstractGraph.edges() . |
V |
edgeValueOrDefault(java.lang.Object nodeU,
java.lang.Object nodeV,
V defaultValue)
If there is an edge connecting
nodeU to nodeV , returns the non-null value
associated with that edge; otherwise, returns defaultValue . |
boolean |
isDirected()
Returns true if the edges in this graph are directed.
|
ElementOrder<N> |
nodeOrder()
Returns the order of iteration for the elements of
Graph.nodes() . |
java.util.Set<N> |
nodes()
Returns all nodes in this graph, in the order specified by
Graph.nodeOrder() . |
java.util.Set<N> |
predecessors(java.lang.Object 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(java.lang.Object 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. |
edgeValue, toString
degree, edges, inDegree, outDegree
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
equals, hashCode
private 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()
Graph
Graph.nodeOrder()
.public boolean isDirected()
Graph
source node
to a target node
, while
undirected edges connect a pair of nodes to each other.public boolean allowsSelfLoops()
Graph
UnsupportedOperationException
.public ElementOrder<N> nodeOrder()
Graph
Graph.nodes()
.public java.util.Set<N> adjacentNodes(java.lang.Object node)
Graph
node
in this graph.public java.util.Set<N> predecessors(java.lang.Object node)
Graph
node
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 Graph.adjacentNodes(Object)
.
public java.util.Set<N> successors(java.lang.Object node)
Graph
node
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 Graph.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 V edgeValueOrDefault(java.lang.Object nodeU, java.lang.Object nodeV, @Nullable V defaultValue)
ValueGraph
nodeU
to nodeV
, returns the non-null value
associated with that edge; otherwise, returns defaultValue
.
In an undirected graph, this is equal to edgeValueOrDefault(nodeV, nodeU,
defaultValue)
.
protected long edgeCount()
AbstractGraph
AbstractGraph.edges()
. The
default implementation is O(|N|). You can manually keep track of the number of edges and
override this method for better performance.edgeCount
in class AbstractGraph<N>
protected final GraphConnections<N,V> checkedConnections(java.lang.Object node)
protected final boolean containsNode(@Nullable java.lang.Object node)