Class GraphBuilder<N>
- Type Parameters:
N- The most general node type this builder will support. This is normallyObjectunless it is constrained by using a method likenodeOrder(com.google.common.graph.ElementOrder<N1>), or the builder is constructed based on an existingGraphusingfrom(Graph).
MutableGraph or ImmutableGraph with
user-defined properties.
A Graph built by this class has the following default properties:
- does not allow self-loops
- orders
Graph.nodes()in the order in which the elements were added (insertion order)
Graphs 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 graph
MutableGraph<String> graph = GraphBuilder.undirected().allowsSelfLoops(true).build();
graph.putEdge("bread", "bread");
graph.putEdge("chocolate", "peanut butter");
graph.putEdge("peanut butter", "jelly");
// Building an immutable graph
ImmutableGraph<String> immutableGraph =
GraphBuilder.undirected()
.allowsSelfLoops(true)
.<String>immutable()
.putEdge("bread", "bread")
.putEdge("chocolate", "peanut butter")
.putEdge("peanut butter", "jelly")
.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>
MutableGraph<N1> build()Returns an emptyMutableGraphwith the properties of thisGraphBuilder.static GraphBuilder<Object> directed()Returns aGraphBuilderfor building directed graphs.expectedNodeCount(int expectedNodeCount) Specifies the expected number of nodes in the graph.static <N> GraphBuilder<N> Returns aGraphBuilderinitialized with all properties queryable fromgraph.<N1 extends N>
ImmutableGraph.Builder<N1> Returns anImmutableGraph.Builderwith the properties of thisGraphBuilder.<N1 extends N>
GraphBuilder<N1> incidentEdgeOrder(ElementOrder<N1> incidentEdgeOrder) Specifies the order of iteration for the elements ofGraph.edges(),Graph.adjacentNodes(Object),Graph.predecessors(Object),Graph.successors(Object)andGraph.incidentEdges(Object).<N1 extends N>
GraphBuilder<N1> nodeOrder(ElementOrder<N1> nodeOrder) Specifies the order of iteration for the elements ofGraph.nodes().static GraphBuilder<Object> Returns aGraphBuilderfor building undirected graphs.
-
Method Details
-
directed
Returns aGraphBuilderfor building directed graphs. -
undirected
Returns aGraphBuilderfor building undirected graphs. -
from
Returns aGraphBuilderinitialized with all properties queryable fromgraph.The "queryable" properties are those that are exposed through the
Graphinterface, such asGraph.isDirected(). Other properties, such asexpectedNodeCount(int), are not set in the new builder. -
immutable
Returns anImmutableGraph.Builderwith the properties of thisGraphBuilder.The returned builder can be used for populating an
ImmutableGraph.Note that the returned builder will always have
incidentEdgeOrder(com.google.common.graph.ElementOrder<N1>)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 ofGraph.edges(),Graph.adjacentNodes(Object),Graph.predecessors(Object),Graph.successors(Object)andGraph.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 emptyMutableGraphwith the properties of thisGraphBuilder.
-