Class StandardMutableNetwork<N,E>

java.lang.Object
com.google.common.graph.AbstractNetwork<N,E>
com.google.common.graph.StandardNetwork<N,E>
com.google.common.graph.StandardMutableNetwork<N,E>
Type Parameters:
N - Node parameter type
E - Edge parameter type
All Implemented Interfaces:
MutableNetwork<N,E>, Network<N,E>, PredecessorsFunction<N>, SuccessorsFunction<N>

final class StandardMutableNetwork<N,E> extends StandardNetwork<N,E> implements MutableNetwork<N,E>
Standard implementation of MutableNetwork that supports both directed and undirected graphs. Instances of this class should be constructed with NetworkBuilder.

Time complexities for mutation methods are all O(1) except for removeNode(N node), which is in O(d_node) where d_node is the degree of node.

  • Constructor Details

    • StandardMutableNetwork

      StandardMutableNetwork(NetworkBuilder<? super N,? super E> builder)
      Constructs a mutable graph with the properties specified in builder.
  • Method Details

    • addNode

      public boolean addNode(N node)
      Description copied from interface: MutableNetwork
      Adds node if it is not already present.

      Nodes must be unique, just as Map keys must be. They must also be non-null.

      Specified by:
      addNode in interface MutableNetwork<N,E>
      Returns:
      true if the network was modified as a result of this call
    • addNodeInternal

      private NetworkConnections<N,E> addNodeInternal(N node)
      Adds node to the graph and returns the associated NetworkConnections.
      Throws:
      IllegalStateException - if node is already present
    • addEdge

      public boolean addEdge(N nodeU, N nodeV, E edge)
      Description copied from interface: MutableNetwork
      Adds edge connecting nodeU to nodeV.

      If the graph is directed, edge will be directed in this graph; otherwise, it will be undirected.

      edge must be unique to this graph, just as a Map key must be. It must also be non-null.

      If nodeU and nodeV are not already present in this graph, this method will silently add nodeU and nodeV to the graph.

      If edge already connects nodeU to nodeV (in the specified order if this network Network.isDirected(), else in any order), then this method will have no effect.

      Specified by:
      addEdge in interface MutableNetwork<N,E>
      Returns:
      true if the network was modified as a result of this call
    • addEdge

      public boolean addEdge(EndpointPair<N> endpoints, E edge)
      Description copied from interface: MutableNetwork
      Adds edge connecting endpoints. In an undirected network, edge will also connect nodeV to nodeU.

      If this graph is directed, edge will be directed in this graph; if it is undirected, edge will be undirected in this graph.

      If this graph is directed, endpoints must be ordered.

      edge must be unique to this graph, just as a Map key must be. It must also be non-null.

      If either or both endpoints are not already present in this graph, this method will silently add each missing endpoint to the graph.

      If edge already connects an endpoint pair equal to endpoints, then this method will have no effect.

      Specified by:
      addEdge in interface MutableNetwork<N,E>
      Returns:
      true if the network was modified as a result of this call
    • removeNode

      public boolean removeNode(N node)
      Description copied from interface: MutableNetwork
      Removes node if it is present; all edges incident to node will also be removed.
      Specified by:
      removeNode in interface MutableNetwork<N,E>
      Returns:
      true if the network was modified as a result of this call
    • removeEdge

      public boolean removeEdge(E edge)
      Description copied from interface: MutableNetwork
      Removes edge from this network, if it is present.
      Specified by:
      removeEdge in interface MutableNetwork<N,E>
      Returns:
      true if the network was modified as a result of this call
    • newConnections

      private NetworkConnections<N,E> newConnections()