Class 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.
    Using an optimized directed node requires that the size of the in and out edge adjacency lists be known before its creation.
    Author:
    Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net
    See Also:
    DirectedNode, Serialized Form
    • 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.
        Specified by:
        add in interface Node
        Parameters:
        e - Adjacent edge to add.
      • remove

        public void remove​(Edge e)
        Unsupported Operation.
        Specified by:
        remove in interface Node
        Parameters:
        e - Adjacent edge to remove.
      • 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 interface Node
        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 interface DirectedNode
        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 interface DirectedNode
        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 interface Node
        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)
      • getEdges

        public List<DirectedEdge> getEdges()
        Description copied from interface: Node
        Returns the edge adjacency list of the node.
        Specified by:
        getEdges in interface Node
        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.
      • getOutEdgeArray

        public DirectedEdge[] getOutEdgeArray()
        Returns the out adjacency edge array of the node.
        Returns:
        An array of out edges for the node.
      • 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 interface Node
        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.
      • 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.
      • getRelated

        public Iterator<Node> getRelated()
        This iterator iterates over the underlying edge arrays of the node.
        Specified by:
        getRelated in interface Graphable
        Returns:
        Iterator An iterator over other components of the graph that are related to the component.
        See Also:
        Graphable.getRelated()
      • getOutRelated

        public Iterator<Node> getOutRelated()
        This iterator iterates over the underlying out edge array of the node.
        Specified by:
        getOutRelated in interface DirectedGraphable
        Returns:
        An iterator over the other directed components related through an out relationship.
        See Also:
        Graphable.getRelated()