Class ImmutableValueGraph.Builder<N,V>
- java.lang.Object
-
- com.google.common.graph.ImmutableValueGraph.Builder<N,V>
-
- Enclosing class:
- ImmutableValueGraph<N,V>
public static class ImmutableValueGraph.Builder<N,V> extends java.lang.Object
A builder for creatingImmutableValueGraph
instances, especiallystatic final
graphs. Example:static final ImmutableValueGraph<City, Distance> CITY_ROAD_DISTANCE_GRAPH = ValueGraphBuilder.undirected() .<City, Distance>immutable() .putEdgeValue(PARIS, BERLIN, kilometers(1060)) .putEdgeValue(PARIS, BRUSSELS, kilometers(317)) .putEdgeValue(BERLIN, BRUSSELS, kilometers(764)) .addNode(REYKJAVIK) .build();
Builder instances can be reused; it is safe to call
build()
multiple times to build multiple graphs in series. Each new graph contains all the elements of the ones created before it.- Since:
- 28.0
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ImmutableValueGraph.Builder<N,V>
addNode(N node)
Addsnode
if it is not already present.ImmutableValueGraph<N,V>
build()
Returns a newly-createdImmutableValueGraph
based on the contents of thisBuilder
.ImmutableValueGraph.Builder<N,V>
putEdgeValue(EndpointPair<N> endpoints, V value)
Adds an edge connectingendpoints
if one is not already present, and sets a value for that edge tovalue
(overwriting the existing value, if any).ImmutableValueGraph.Builder<N,V>
putEdgeValue(N nodeU, N nodeV, V value)
Adds an edge connectingnodeU
tonodeV
if one is not already present, and sets a value for that edge tovalue
(overwriting the existing value, if any).
-
-
-
Method Detail
-
addNode
@CanIgnoreReturnValue public ImmutableValueGraph.Builder<N,V> addNode(N node)
Addsnode
if it is not already present.Nodes must be unique, just as
Map
keys must be. They must also be non-null.- Returns:
- this
Builder
object
-
putEdgeValue
@CanIgnoreReturnValue public ImmutableValueGraph.Builder<N,V> putEdgeValue(N nodeU, N nodeV, V value)
Adds an edge connectingnodeU
tonodeV
if one is not already present, and sets a value for that edge tovalue
(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
andnodeV
are not already present in this graph, this method will silentlyadd
nodeU
andnodeV
to the graph.- Returns:
- this
Builder
object - Throws:
java.lang.IllegalArgumentException
- if the introduction of the edge would violateValueGraph.allowsSelfLoops()
-
putEdgeValue
@CanIgnoreReturnValue public ImmutableValueGraph.Builder<N,V> putEdgeValue(EndpointPair<N> endpoints, V value)
Adds an edge connectingendpoints
if one is not already present, and sets a value for that edge tovalue
(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:
- this
Builder
object - Throws:
java.lang.IllegalArgumentException
- if the introduction of the edge would violateValueGraph.allowsSelfLoops()
java.lang.IllegalArgumentException
- if the endpoints are unordered and the graph is directed
-
build
public ImmutableValueGraph<N,V> build()
Returns a newly-createdImmutableValueGraph
based on the contents of thisBuilder
.
-
-