Class ValueGraphBuilder<N,V>
- Type Parameters:
N- The most general node type this builder will support. This is normallyObjectunless it is constrained by using a method likenodeOrder(ElementOrder), or the builder is constructed based on an existingValueGraphusingfrom(ValueGraph).V- The most general value type this builder will support. This is normallyObjectunless the builder is constructed based on an existingGraphusingfrom(ValueGraph).
MutableValueGraph or ImmutableValueGraph
with user-defined properties.
A ValueGraph built by this class has the following default properties:
- does not allow self-loops
- orders
ValueGraph.nodes()in the order in which the elements were added (insertion order)
ValueGraphs built by this class also guarantee that each collection-returning accessor
returns a (live) unmodifiable view; see the external
documentation for details.
Examples of use:
// Building a mutable value graph
MutableValueGraph<String, Double> graph =
ValueGraphBuilder.undirected().allowsSelfLoops(true).build();
graph.putEdgeValue("San Francisco", "San Francisco", 0.0);
graph.putEdgeValue("San Jose", "San Jose", 0.0);
graph.putEdgeValue("San Francisco", "San Jose", 48.4);
// Building an immutable value graph
ImmutableValueGraph<String, Double> immutableGraph =
ValueGraphBuilder.undirected()
.allowsSelfLoops(true)
.<String, Double>immutable()
.putEdgeValue("San Francisco", "San Francisco", 0.0)
.putEdgeValue("San Jose", "San Jose", 0.0)
.putEdgeValue("San Francisco", "San Jose", 48.4)
.build();
- Since:
- 20.0
- Author:
- James Sexton, Joshua O'Madadhain
-
Method Summary
Modifier and TypeMethodDescriptionallowsSelfLoops(boolean allowsSelfLoops) Specifies whether the graph will allow self-loops (edges that connect a node to itself).<N1 extends N, V1 extends V>
MutableValueGraph<N1, V1> build()Returns an emptyMutableValueGraphwith the properties of thisValueGraphBuilder.static ValueGraphBuilder<Object, Object> directed()Returns aValueGraphBuilderfor building directed graphs.expectedNodeCount(int expectedNodeCount) Specifies the expected number of nodes in the graph.static <N,V> ValueGraphBuilder <N, V> from(ValueGraph<N, V> graph) Returns aValueGraphBuilderinitialized with all properties queryable fromgraph.<N1 extends N, V1 extends V>
ImmutableValueGraph.Builder<N1, V1> Returns anImmutableValueGraph.Builderwith the properties of thisValueGraphBuilder.<N1 extends N>
ValueGraphBuilder<N1, V> incidentEdgeOrder(ElementOrder<N1> incidentEdgeOrder) Specifies the order of iteration for the elements ofValueGraph.edges(),ValueGraph.adjacentNodes(Object),ValueGraph.predecessors(Object),ValueGraph.successors(Object)andValueGraph.incidentEdges(Object).<N1 extends N>
ValueGraphBuilder<N1, V> nodeOrder(ElementOrder<N1> nodeOrder) Specifies the order of iteration for the elements ofGraph.nodes().static ValueGraphBuilder<Object, Object> Returns aValueGraphBuilderfor building undirected graphs.
-
Method Details
-
directed
Returns aValueGraphBuilderfor building directed graphs. -
undirected
Returns aValueGraphBuilderfor building undirected graphs. -
from
Returns aValueGraphBuilderinitialized with all properties queryable fromgraph.The "queryable" properties are those that are exposed through the
ValueGraphinterface, such asValueGraph.isDirected(). Other properties, such asexpectedNodeCount(int), are not set in the new builder. -
immutable
Returns anImmutableValueGraph.Builderwith the properties of thisValueGraphBuilder.The returned builder can be used for populating an
ImmutableValueGraph.Note that the returned builder will always have
incidentEdgeOrder(ElementOrder)set toElementOrder.stable(), regardless of the value that was set in this builder.- Since:
- 28.0
-
allowsSelfLoops
Specifies whether the graph will allow self-loops (edges that connect a node to itself). Attempting to add a self-loop to a graph that does not allow them will throw anUnsupportedOperationException.The default value is
false. -
expectedNodeCount
Specifies the expected number of nodes in the graph.- Throws:
IllegalArgumentException- ifexpectedNodeCountis negative
-
nodeOrder
Specifies the order of iteration for the elements ofGraph.nodes().The default value is
insertion order. -
incidentEdgeOrder
Specifies the order of iteration for the elements ofValueGraph.edges(),ValueGraph.adjacentNodes(Object),ValueGraph.predecessors(Object),ValueGraph.successors(Object)andValueGraph.incidentEdges(Object).The default value is
unorderedfor mutable graphs. For immutable graphs, this value is ignored; they always have astableorder.- Throws:
IllegalArgumentException- ifincidentEdgeOrderis not eitherElementOrder.unordered()orElementOrder.stable().- Since:
- 29.0
-
build
Returns an emptyMutableValueGraphwith the properties of thisValueGraphBuilder.
-