Package org.geotools.graph.structure.opt
Class OptDirectedNode
- Object
-
- OptGraphable
-
- OptDirectedNode
-
- All Implemented Interfaces:
Serializable
,DirectedGraphable
,DirectedNode
,Graphable
,Node
- Direct Known Subclasses:
OptDirectedXYNode
public class OptDirectedNode extends OptGraphable implements DirectedNode
Optimized implementation of DirectedNode. The following optimizations reduce space and increase performance.
- In and Out edge adjacency list stored as arrays of exact size.
- Support from removing edges is removed
- The related component iterators iterates over the underlying edge arrays of the node instread of newly created collections.
- Author:
- Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net
- See Also:
DirectedNode
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
OptDirectedNode.RelatedIterator
Iterator used to iterate over related nodes.
-
Constructor Summary
Constructors Constructor Description OptDirectedNode()
Constructs a new OptDirectedNode.OptDirectedNode(int indegree, int outdegree)
Constructs a new OptDirectedNode.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Edge e)
Not supported.void
addIn(DirectedEdge e)
Adds an edge to the in adjacency list of the node.void
addOut(DirectedEdge e)
Adds an edge to the out adjacency list of the node.int
getDegree()
Returns the degree of the node.Edge
getEdge(Node other)
Returns an edge in the adjacency list of the node that is adjacent to another specified node.List<DirectedEdge>
getEdges()
Returns the edge adjacency list of the node.List<Edge>
getEdges(Node other)
Returns a collection of edges in the adjacency list of the node that are adjacent to another specified node.int
getInDegree()
Returns the in degree of the node.Edge
getInEdge(DirectedNode other)
Returns an edge that terminates at the node and originates from a specified node.DirectedEdge[]
getInEdgeArray()
Returns the in adjacency edge array of the node.List<DirectedEdge>
getInEdges()
Returns the in adjacency list of the node.List<Edge>
getInEdges(DirectedNode other)
Returns all edges that terminate at the node and originate from a specified node.Iterator<Node>
getInRelated()
This iterator iterates over the underlying in edge array of the node.int
getOutDegree()
Returns the out degree of the node.Edge
getOutEdge(DirectedNode other)
Returns an edge that originates at the node and terminates at a specified node.DirectedEdge[]
getOutEdgeArray()
Returns the out adjacency edge array of the node.List<DirectedEdge>
getOutEdges()
Returns the out adjacency list of the node.List<Edge>
getOutEdges(DirectedNode other)
Returns all edges that originate at the node and terminate from at specified node.Iterator<Node>
getOutRelated()
This iterator iterates over the underlying out edge array of the node.Iterator<Node>
getRelated()
This iterator iterates over the underlying edge arrays of the node.void
remove(Edge e)
Unsupported Operation.void
removeIn(DirectedEdge e)
Unsupported Operation.void
removeOut(DirectedEdge e)
Unsupported Operation.void
setInDegree(int indegree)
Sets the in degree of the node.void
setOutDegree(int outdegree)
Sets the out degree of the node.-
Methods inherited from class OptGraphable
getCount, getID, getObject, isVisited, setCount, setID, setObject, setVisited
-
-
-
-
Constructor Detail
-
OptDirectedNode
public OptDirectedNode()
Constructs a new OptDirectedNode. This constructor does not create the edge adjacency arrays for the node.
-
OptDirectedNode
public OptDirectedNode(int indegree, int outdegree)
Constructs a new OptDirectedNode.- Parameters:
indegree
- Number of in adjacenct edges to the node.outdegree
- Number of out adjacent edges to the node.
-
-
Method Detail
-
add
public void add(Edge e)
Not supported.
-
addIn
public void addIn(DirectedEdge e)
Description copied from interface:DirectedNode
Adds an edge to the in adjacency list of the node.- Specified by:
addIn
in interfaceDirectedNode
- Parameters:
e
- A directed edge that terminates at the node.- See Also:
DirectedNode.addIn(DirectedEdge)
-
addOut
public void addOut(DirectedEdge e)
Description copied from interface:DirectedNode
Adds an edge to the out adjacency list of the node.- Specified by:
addOut
in interfaceDirectedNode
- Parameters:
e
- A directed edge that originates from the node.- See Also:
DirectedNode.addOut(DirectedEdge)
-
remove
public void remove(Edge e)
Unsupported Operation.
-
removeIn
public void removeIn(DirectedEdge e)
Unsupported Operation.- Specified by:
removeIn
in interfaceDirectedNode
- Parameters:
e
- A directed edge that terminates at the node.- See Also:
Node.remove(Edge)
-
removeOut
public void removeOut(DirectedEdge e)
Unsupported Operation.- Specified by:
removeOut
in interfaceDirectedNode
- Parameters:
e
- A directed edge that originates from the node.- See Also:
Node.remove(Edge)
-
getEdge
public Edge getEdge(Node other)
Description copied from interface:Node
Returns an edge in the adjacency list of the node that is adjacent to another specified node.
Note: It is possible for two nodes to share multiple edges between them. In this case, getEdges(Node other) can be used to obtain a complete list.- Specified by:
getEdge
in interfaceNode
- Parameters:
other
- The other node that the desired edge to return is adjacent to.- Returns:
- The first edge that is found to be adjacent to the specified node.
- See Also:
Node.getEdge(Node)
-
getInEdge
public Edge getInEdge(DirectedNode other)
Description copied from interface:DirectedNode
Returns an edge that terminates at the node and originates from a specified node.
Note: It is possible for two nodes to share multiple edges between them. In this case, getInEdges(Node other) can be used to obtain a complete list.- Specified by:
getInEdge
in interfaceDirectedNode
- Parameters:
other
- The originating node.- Returns:
- The first edge found to terminate at the node and originate from the specefied node.
- See Also:
DirectedNode.getInEdge(DirectedNode)
-
getOutEdge
public Edge getOutEdge(DirectedNode other)
Description copied from interface:DirectedNode
Returns an edge that originates at the node and terminates at a specified node.
Note: It is possible for two nodes to share multiple edges between them. In this case, getOutEdges(Node other) can be used to obtain a complete list.- Specified by:
getOutEdge
in interfaceDirectedNode
- Parameters:
other
- The terminating node.- Returns:
- The first edge found to originate at the node and terminate at the specefied node.
- See Also:
DirectedNode.getOutEdge(DirectedNode)
-
getEdges
public List<Edge> getEdges(Node other)
Description copied from interface:Node
Returns a collection of edges in the adjacency list of the node that are adjacent to another specified node.- Specified by:
getEdges
in interfaceNode
- Parameters:
other
- The other node that the desired edges to return are adjacent to.- Returns:
- List of all edges that are found to be adjacent to the specified node.
- See Also:
Node.getEdges(Node)
-
getInEdges
public List<Edge> getInEdges(DirectedNode other)
Description copied from interface:DirectedNode
Returns all edges that terminate at the node and originate from a specified node.- Specified by:
getInEdges
in interfaceDirectedNode
- Parameters:
other
- The originating node.- Returns:
- All edges found to terminate at the node and originate from the specified node.
- See Also:
DirectedNode.getInEdges(DirectedNode)
-
getOutEdges
public List<Edge> getOutEdges(DirectedNode other)
Description copied from interface:DirectedNode
Returns all edges that originate at the node and terminate from at specified node.- Specified by:
getOutEdges
in interfaceDirectedNode
- Parameters:
other
- The temimnating node.- Returns:
- All edges found to originate at the node and terminate at the specified node.
- See Also:
DirectedNode.getOutEdges(DirectedNode)
-
getEdges
public List<DirectedEdge> getEdges()
Description copied from interface:Node
Returns the edge adjacency list of the node.- Specified by:
getEdges
in interfaceNode
- Returns:
- A list containing all edges that are adjacent to the node.
- See Also:
Node.getEdges()
-
getInEdgeArray
public DirectedEdge[] getInEdgeArray()
Returns the in adjacency edge array of the node.- Returns:
- An array of in edges for the node.
-
getInEdges
public List<DirectedEdge> getInEdges()
Description copied from interface:DirectedNode
Returns the in adjacency list of the node.- Specified by:
getInEdges
in interfaceDirectedNode
- Returns:
- A list of edges that terminate at the node.
- See Also:
DirectedNode.getInEdges()
-
getOutEdgeArray
public DirectedEdge[] getOutEdgeArray()
Returns the out adjacency edge array of the node.- Returns:
- An array of out edges for the node.
-
getOutEdges
public List<DirectedEdge> getOutEdges()
Description copied from interface:DirectedNode
Returns the out adjacency list of the node.- Specified by:
getOutEdges
in interfaceDirectedNode
- Returns:
- A list of edges originating at the node.
- See Also:
DirectedNode.getOutEdges()
-
getDegree
public int getDegree()
Description copied from interface:Node
Returns the degree of the node. The degree of a node is defined as the number of edges that are adjacent to the node.- Specified by:
getDegree
in interfaceNode
- Returns:
- int Degree of node.
- See Also:
Node.getDegree()
-
setInDegree
public void setInDegree(int indegree)
Sets the in degree of the node. This method builds the in edge adjacency list of the node.- Parameters:
indegree
- The in degree / size of in edge array of the node.
-
getInDegree
public int getInDegree()
Description copied from interface:DirectedNode
Returns the in degree of the node.- Specified by:
getInDegree
in interfaceDirectedNode
- Returns:
- The number of edges that terminate at the node.
- See Also:
DirectedNode.getInDegree()
-
setOutDegree
public void setOutDegree(int outdegree)
Sets the out degree of the node. This method builds the out edge adjacency list of the node.- Parameters:
outdegree
- The out degree / size of out edge array of the node.
-
getOutDegree
public int getOutDegree()
Description copied from interface:DirectedNode
Returns the out degree of the node.- Specified by:
getOutDegree
in interfaceDirectedNode
- Returns:
- The number of edges that originate at the node.
- See Also:
DirectedNode.getOutDegree()
-
getRelated
public Iterator<Node> getRelated()
This iterator iterates over the underlying edge arrays of the node.- Specified by:
getRelated
in interfaceGraphable
- Returns:
- Iterator An iterator over other components of the graph that are related to the component.
- See Also:
Graphable.getRelated()
-
getInRelated
public Iterator<Node> getInRelated()
This iterator iterates over the underlying in edge array of the node.- Specified by:
getInRelated
in interfaceDirectedGraphable
- Returns:
- An iterator over the other directed components related through an in relationship.
- See Also:
DirectedGraphable.getInRelated()
-
getOutRelated
public Iterator<Node> getOutRelated()
This iterator iterates over the underlying out edge array of the node.- Specified by:
getOutRelated
in interfaceDirectedGraphable
- Returns:
- An iterator over the other directed components related through an out relationship.
- See Also:
Graphable.getRelated()
-
-