Class AbstractBaseGraph<N>

    • Constructor Detail

      • AbstractBaseGraph

        AbstractBaseGraph()
    • Method Detail

      • edgeCount

        protected long edgeCount()
        Returns the number of edges in this graph; used to calculate the size of 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.
      • incidentEdges

        public java.util.Set<EndpointPair<N>> incidentEdges​(N node)
        Description copied from interface: BaseGraph
        Returns the edges in this graph whose endpoints include node.

        This is equal to the union of incoming and outgoing edges.

        Specified by:
        incidentEdges in interface BaseGraph<N>
      • degree

        public int degree​(N node)
        Description copied from interface: BaseGraph
        Returns the count of node'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.

        Specified by:
        degree in interface BaseGraph<N>
      • inDegree

        public int inDegree​(N node)
        Description copied from interface: BaseGraph
        Returns the count of node'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.

        Specified by:
        inDegree in interface BaseGraph<N>
      • outDegree

        public int outDegree​(N node)
        Description copied from interface: BaseGraph
        Returns the count of node'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.

        Specified by:
        outDegree in interface BaseGraph<N>
      • hasEdgeConnecting

        public boolean hasEdgeConnecting​(N nodeU,
                                         N nodeV)
        Description copied from interface: BaseGraph
        Returns true if there is an edge that directly connects nodeU to nodeV. This is equivalent to nodes().contains(nodeU) && successors(nodeU).contains(nodeV).

        In an undirected graph, this is equal to hasEdgeConnecting(nodeV, nodeU).

        Specified by:
        hasEdgeConnecting in interface BaseGraph<N>
      • hasEdgeConnecting

        public boolean hasEdgeConnecting​(EndpointPair<N> endpoints)
        Description copied from interface: BaseGraph
        Returns true if there is an edge that directly connects endpoints (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).

        Specified by:
        hasEdgeConnecting in interface BaseGraph<N>
      • validateEndpoints

        protected final void validateEndpoints​(EndpointPair<?> endpoints)
        Throws IllegalArgumentException if the ordering of endpoints is not compatible with the directionality of this graph.
      • isOrderingCompatible

        protected final boolean isOrderingCompatible​(EndpointPair<?> endpoints)