Class ImmutableValueGraph.Builder<N,V>
- Enclosing class:
ImmutableValueGraph<N,
V>
ImmutableValueGraph
instances, especially static 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
- Author:
- James Sexton, Jens Nyman
-
Method Summary
Modifier and TypeMethodDescriptionAddsnode
if it is not already present.build()
Returns a newly-createdImmutableValueGraph
based on the contents of thisBuilder
.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).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 Details
-
addNode
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:
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:
IllegalArgumentException
- if the introduction of the edge would violateValueGraph.allowsSelfLoops()
IllegalArgumentException
- if the endpoints are unordered and the graph is directed
-
build
Returns a newly-createdImmutableValueGraph
based on the contents of thisBuilder
.
-