Class GraphBuilder<N>
- Type Parameters:
- N- The most general node type this builder will support. This is normally- Objectunless it is constrained by using a method like- nodeOrder(ElementOrder), or the builder is constructed based on an existing- Graphusing- from(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 SummaryModifier 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- 
directedReturns aGraphBuilderfor building directed graphs.
- 
undirectedReturns aGraphBuilderfor building undirected graphs.
- 
fromReturns 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.
- 
immutableReturns 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(ElementOrder)set toElementOrder.stable(), regardless of the value that was set in this builder.- Since:
- 28.0
 
- 
allowsSelfLoopsSpecifies 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.
- 
expectedNodeCountSpecifies the expected number of nodes in the graph.- Throws:
- IllegalArgumentException- if- expectedNodeCountis negative
 
- 
nodeOrderSpecifies the order of iteration for the elements ofGraph.nodes().The default value is insertion order.
- 
incidentEdgeOrderSpecifies 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- if- incidentEdgeOrderis not either- ElementOrder.unordered()or- ElementOrder.stable().
- Since:
- 29.0
 
- 
buildReturns an emptyMutableGraphwith the properties of thisGraphBuilder.
 
-