N
- The most general node type this builder will support. This is normally Object
unless it is constrained by using a method like nodeOrder(com.google.common.graph.ElementOrder<N1>)
, or the builder is
constructed based on an existing Graph
using from(Graph)
.@Beta @DoNotMock public final class GraphBuilder<N> extends Object
MutableGraph
or ImmutableGraph
with
user-defined properties.
A graph built by this class will have the following properties by default:
Graph.nodes()
in the order in which the elements were added
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();
Modifier and Type | Method and Description |
---|---|
GraphBuilder<N> |
allowsSelfLoops(boolean allowsSelfLoops)
Specifies whether the graph will allow self-loops (edges that connect a node to itself).
|
<N1 extends N> |
build()
Returns an empty
MutableGraph with the properties of this GraphBuilder . |
static GraphBuilder<Object> |
directed()
Returns a
GraphBuilder for building directed graphs. |
GraphBuilder<N> |
expectedNodeCount(int expectedNodeCount)
Specifies the expected number of nodes in the graph.
|
static <N> GraphBuilder<N> |
from(Graph<N> graph)
Returns a
GraphBuilder initialized with all properties queryable from graph . |
<N1 extends N> |
immutable()
Returns an
ImmutableGraph.Builder with the properties of this GraphBuilder . |
<N1 extends N> |
incidentEdgeOrder(ElementOrder<N1> incidentEdgeOrder)
Specifies the order of iteration for the elements of
Graph.edges() , Graph.adjacentNodes(Object) , Graph.predecessors(Object) , Graph.successors(Object) and Graph.incidentEdges(Object) . |
<N1 extends N> |
nodeOrder(ElementOrder<N1> nodeOrder)
Specifies the order of iteration for the elements of
Graph.nodes() . |
static GraphBuilder<Object> |
undirected()
Returns a
GraphBuilder for building undirected graphs. |
public static GraphBuilder<Object> directed()
GraphBuilder
for building directed graphs.public static GraphBuilder<Object> undirected()
GraphBuilder
for building undirected graphs.public static <N> GraphBuilder<N> from(Graph<N> graph)
GraphBuilder
initialized with all properties queryable from graph
.
The "queryable" properties are those that are exposed through the Graph
interface,
such as Graph.isDirected()
. Other properties, such as expectedNodeCount(int)
,
are not set in the new builder.
public <N1 extends N> ImmutableGraph.Builder<N1> immutable()
ImmutableGraph.Builder
with the properties of this GraphBuilder
.
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 to ElementOrder.stable()
, regardless of the value that was set in this builder.
public GraphBuilder<N> allowsSelfLoops(boolean allowsSelfLoops)
UnsupportedOperationException
.
The default value is false
.
public GraphBuilder<N> expectedNodeCount(int expectedNodeCount)
IllegalArgumentException
- if expectedNodeCount
is negativepublic <N1 extends N> GraphBuilder<N1> nodeOrder(ElementOrder<N1> nodeOrder)
Graph.nodes()
.
The default value is insertion order
.
public <N1 extends N> GraphBuilder<N1> incidentEdgeOrder(ElementOrder<N1> incidentEdgeOrder)
Graph.edges()
, Graph.adjacentNodes(Object)
, Graph.predecessors(Object)
, Graph.successors(Object)
and Graph.incidentEdges(Object)
.
The default value is unordered
for mutable graphs. For
immutable graphs, this value is ignored; they always have a stable
order.
IllegalArgumentException
- if incidentEdgeOrder
is not either ElementOrder.unordered()
or ElementOrder.stable()
.public <N1 extends N> MutableGraph<N1> build()
MutableGraph
with the properties of this GraphBuilder
.Copyright © 2010–2020. All rights reserved.