Interface MutableValueGraph<N,V>

Type Parameters:
N - Node parameter type
V - Value parameter type
All Superinterfaces:
PredecessorsFunction<N>, SuccessorsFunction<N>, ValueGraph<N,V>

@Beta public interface MutableValueGraph<N,V> extends ValueGraph<N,V>
A subinterface of ValueGraph which adds mutation methods. When mutation is not required, users should prefer the ValueGraph interface.
Since:
20.0
Author:
James Sexton
  • Method Details

    • addNode

      Adds node if it is not already present.

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

      Returns:
      true if the graph was modified as a result of this call
    • putEdgeValue

      @CanIgnoreReturnValue @Nullable V putEdgeValue(N nodeU, N nodeV, V value)
      Adds an edge connecting nodeU to nodeV if one is not already present, and sets a value for that edge to value (overwriting the existing value, if any).

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

      Values do not have to be unique. However, values must 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.

      Returns:
      the value previously associated with the edge connecting nodeU to nodeV, or null if there was no such edge.
      Throws:
      IllegalArgumentException - if the introduction of the edge would violate ValueGraph.allowsSelfLoops()
    • putEdgeValue

      Adds an edge connecting endpoints if one is not already present, and sets a value for that edge to value (overwriting the existing value, if any).

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

      If this graph is directed, endpoints must be ordered.

      Values do not have to be unique. However, values must 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.

      Returns:
      the value previously associated with the edge connecting nodeU to nodeV, or null if there was no such edge.
      Throws:
      IllegalArgumentException - if the introduction of the edge would violate ValueGraph.allowsSelfLoops()
      IllegalArgumentException - if the endpoints are unordered and the graph is directed
      Since:
      27.1
    • removeNode

      Removes node if it is present; all edges incident to node will also be removed.
      Returns:
      true if the graph was modified as a result of this call
    • removeEdge

      Removes the edge connecting nodeU to nodeV, if it is present.
      Returns:
      the value previously associated with the edge connecting nodeU to nodeV, or null if there was no such edge.
    • removeEdge

      Removes the edge connecting endpoints, if it is present.

      If this graph is directed, endpoints must be ordered.

      Returns:
      the value previously associated with the edge connecting endpoints, or null if there was no such edge.
      Since:
      27.1