Class AbstractBaseGraph<N>

java.lang.Object
com.google.common.graph.AbstractBaseGraph<N>
Type Parameters:
N - Node parameter type
All Implemented Interfaces:
BaseGraph<N>, PredecessorsFunction<N>, SuccessorsFunction<N>
Direct Known Subclasses:
AbstractGraph, AbstractValueGraph

abstract class AbstractBaseGraph<N> extends Object implements BaseGraph<N>
This class provides a skeletal implementation of BaseGraph.

The methods implemented in this class should not be overridden unless the subclass admits a more efficient implementation.

  • Constructor Details

    • AbstractBaseGraph

      AbstractBaseGraph()
  • Method Details

    • edgeCount

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

      public Set<EndpointPair<N>> edges()
      An implementation of BaseGraph.edges() defined in terms of Graph.nodes() and BaseGraph.successors(Object).
      Specified by:
      edges in interface BaseGraph<N>
    • incidentEdgeOrder

      public ElementOrder<N> incidentEdgeOrder()
      Description copied from interface: BaseGraph
      Specified by:
      incidentEdgeOrder in interface BaseGraph<N>
    • incidentEdges

      public 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)
      Returns true iff endpoints' ordering is compatible with the directionality of this graph.