|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
UEDigraph is an interface for representing directed graphs of nodes linked by zero or one edge. Each node and edge must be a unique Object in the digraph. Reusing edges and nodes may produce unpredictable results.
By default, this digraph uses equals() as the method to determine identity. Persistent versions may use hasSameIdentity() instead, for example.
One could create a subclass of UEDigraph that will work with zero or more edges by extending this interface. I have not done that.
Direct implementations of UEDigraph should have a single constructor that takes a UEDigraph as a parameter. Some implementations should provide a view of this UEDigraph, by implementing the net.walend.collection.View interface. Others should copy the parameter to produced an immutable UEDigraph.
Field Summary | |
static UEDigraph |
EMPTY
|
Method Summary | |
boolean |
containsEdge(java.lang.Object edge)
Returns true if edge exists in the digraph anywhere |
boolean |
containsEdge(java.lang.Object fromNode,
java.lang.Object toNode)
Returns true if the digraph contains any edge from fromNode to toNode |
boolean |
containsEdge(java.lang.Object fromNode,
java.lang.Object toNode,
java.lang.Object edge)
Returns true if edge links fromNode to toNode |
boolean |
containsEdges(Set edges)
|
boolean |
containsNode(java.lang.Object node)
|
boolean |
containsNodes(Set nodes)
|
boolean |
containsUEDigraph(UEDigraph digraph)
Returns true if digraph is a subgraph of this UEDigraph. |
int |
countInboundEdges(java.lang.Object node)
|
int |
countOutboundEdges(java.lang.Object node)
|
int |
edgeCount()
|
EdgeIterator |
edgeIterator()
|
java.lang.Object |
getEdge(java.lang.Object fromNode,
java.lang.Object toNode)
Returns null if either node is not in the digraph or if no edge links fromNode to toNode |
Set |
getEdges()
|
java.lang.Object |
getFromNode(java.lang.Object edge)
|
Set |
getFromNodes(java.lang.Object node)
Returns the set of nodes that can reach this node by crossing one edge. |
Set |
getInboundEdges(java.lang.Object node)
Returns the empty set if node is not in the digraph, or if node has no inbound edges. |
Set |
getNodes()
|
Set |
getOutboundEdges(java.lang.Object node)
Returns the empty set if node is not in the digraph, or if node has no outbound edges. |
java.lang.Object |
getToNode(java.lang.Object edge)
|
Set |
getToNodes(java.lang.Object node)
Returns the set of nodes that can be reached from this node by crossing one edge. |
UEDigraph |
intersectWithUEDigraph(UEDigraph digraph)
Returns a new digraph that is the intersection of this with digraph. |
boolean |
isEdgeFree()
Returns true if this UEDigraph has no edges. |
boolean |
isEmpty()
|
int |
nodeCount()
|
java.util.Iterator |
nodeIterator()
Implementations should explicitly state how they interpret nodeIterator()'s remove method. |
boolean |
sameUEDigraphAs(UEDigraph digraph)
Returns true if digraph is the same as this; that is, if this.containsUEDigraph(digraph) and digraph.containsUEDigraph(this). |
UEDigraph |
unionUEDigraph(UEDigraph digraph)
Returns a new digraph that is the union of this with digraph. |
Methods inherited from interface net.walend.collection.HasState |
getPrincipleInterface, sameStateAs |
Field Detail |
public static final UEDigraph EMPTY
Method Detail |
public int nodeCount()
public int edgeCount()
public boolean isEmpty()
public boolean containsNode(java.lang.Object node)
public boolean containsEdge(java.lang.Object fromNode, java.lang.Object toNode) throws NodeMissingException
NodeMissingException
- if either node is missing from the digraph.public boolean containsEdge(java.lang.Object fromNode, java.lang.Object toNode, java.lang.Object edge) throws NodeMissingException
NodeMissingException
- if either node is missing from the digraph.public boolean containsEdge(java.lang.Object edge)
public int countInboundEdges(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public int countOutboundEdges(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public Set getInboundEdges(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public Set getOutboundEdges(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public java.lang.Object getFromNode(java.lang.Object edge) throws EdgeMissingException
EdgeMissingException
- if the edge is not in the digraph.public java.lang.Object getToNode(java.lang.Object edge) throws EdgeMissingException
EdgeMissingException
- if the edge is not in the digraph.public java.lang.Object getEdge(java.lang.Object fromNode, java.lang.Object toNode) throws NodeMissingException
NodeMissingException
- if either node is missing from the digraph.public Set getFromNodes(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public Set getToNodes(java.lang.Object node) throws NodeMissingException
NodeMissingException
- if node is not in the digraph.public java.util.Iterator nodeIterator()
public EdgeIterator edgeIterator()
public Set getNodes()
public Set getEdges()
public boolean isEdgeFree()
public boolean containsNodes(Set nodes)
public boolean containsEdges(Set edges)
public boolean containsUEDigraph(UEDigraph digraph)
public boolean sameUEDigraphAs(UEDigraph digraph)
public UEDigraph intersectWithUEDigraph(UEDigraph digraph)
public UEDigraph unionUEDigraph(UEDigraph digraph)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |