N - Node parameter typeabstract class AbstractBaseGraph<N> extends java.lang.Object implements BaseGraph<N>
BaseGraph.
The methods implemented in this class should not be overridden unless the subclass admits a more efficient implementation.
| Constructor and Description |
|---|
AbstractBaseGraph() |
| Modifier and Type | Method and Description |
|---|---|
int |
degree(N node)
Returns the count of
node's incident edges, counting self-loops twice (equivalently,
the number of times an edge touches node). |
protected long |
edgeCount()
Returns the number of edges in this graph; used to calculate the size of
edges(). |
java.util.Set<EndpointPair<N>> |
edges()
An implementation of
BaseGraph.edges() defined in terms of BaseGraph.nodes() and BaseGraph.successors(Object). |
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. |
ElementOrder<N> |
incidentEdgeOrder()
Returns an
ElementOrder that specifies the order of iteration for the elements of
BaseGraph.edges(), BaseGraph.adjacentNodes(Object), BaseGraph.predecessors(Object), BaseGraph.successors(Object) and BaseGraph.incidentEdges(Object). |
java.util.Set<EndpointPair<N>> |
incidentEdges(N node)
Returns the edges in this graph whose endpoints include
node. |
int |
inDegree(N node)
Returns the count of
node's incoming edges (equal to predecessors(node).size())
in a directed graph. |
protected boolean |
isOrderingCompatible(EndpointPair<?> endpoints) |
int |
outDegree(N node)
Returns the count of
node's outgoing edges (equal to successors(node).size())
in a directed graph. |
protected void |
validateEndpoints(EndpointPair<?> endpoints)
Throws
IllegalArgumentException if the ordering of endpoints is not compatible
with the directionality of this graph. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitadjacentNodes, allowsSelfLoops, isDirected, nodeOrder, nodes, predecessors, successorsprotected long edgeCount()
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.public java.util.Set<EndpointPair<N>> edges()
BaseGraph.edges() defined in terms of BaseGraph.nodes() and BaseGraph.successors(Object).public ElementOrder<N> incidentEdgeOrder()
BaseGraphElementOrder that specifies the order of iteration for the elements of
BaseGraph.edges(), BaseGraph.adjacentNodes(Object), BaseGraph.predecessors(Object), BaseGraph.successors(Object) and BaseGraph.incidentEdges(Object).incidentEdgeOrder in interface BaseGraph<N>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>public int degree(N node)
BaseGraphnode's incident edges, counting self-loops twice (equivalently,
the number of times an edge touches node).
For directed graphs, this is equal to inDegree(node) + outDegree(node).
For undirected graphs, this is equal to incidentEdges(node).size() + (number of
self-loops incident to node).
If the count is greater than Integer.MAX_VALUE, returns Integer.MAX_VALUE.
public int inDegree(N node)
BaseGraphnode's incoming edges (equal to predecessors(node).size())
in a directed graph. In an undirected graph, returns the BaseGraph.degree(Object).
If the count is greater than Integer.MAX_VALUE, returns Integer.MAX_VALUE.
public int outDegree(N node)
BaseGraphnode's outgoing edges (equal to successors(node).size())
in a directed graph. In an undirected graph, returns the BaseGraph.degree(Object).
If the count is greater than Integer.MAX_VALUE, returns Integer.MAX_VALUE.
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>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>protected final void validateEndpoints(EndpointPair<?> endpoints)
IllegalArgumentException if the ordering of endpoints is not compatible
with the directionality of this graph.protected final boolean isOrderingCompatible(EndpointPair<?> endpoints)