Top Description Fields Constructors Methods
com.google.common.graph

public final Class ValueGraphBuilder<N, V>

extends AbstractGraphBuilder<N>
Class Inheritance
Annotations
@Beta
@ElementTypesAreNonnullByDefault
Type Parameters
<N>
The most general node type this builder will support. This is normally Object unless it is constrained by using a method like nodeOrder, or the builder is constructed based on an existing ValueGraph using from(ValueGraph).
<V>
The most general value type this builder will support. This is normally Object unless the builder is constructed based on an existing Graph using from(ValueGraph).
Static Imports
com.google.common.base.Preconditions.checkArgument, .Preconditions.checkNotNull, com.google.common.graph.Graphs.checkNonNegative

A builder for constructing instances of MutableValueGraph or ImmutableValueGraph with user-defined properties.

A ValueGraph built by this class has the following default properties:

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();
Authors
James Sexton, Joshua O'Madadhain
Since
20.0

Field Summary

Inherited from com.google.common.graph.AbstractGraphBuilder:
allowsSelfLoopsdirectedexpectedNodeCountincidentEdgeOrdernodeOrder

Constructor Summary

AccessConstructor and Description
private
ValueGraphBuilder(boolean directed)

Creates a new instance with the specified edge directionality.

Method Summary

Modifier and TypeMethod and Description
public ValueGraphBuilder<N, V>
allowsSelfLoops(boolean allowsSelfLoops)

Specifies whether the graph will allow self-loops (edges that connect a node to itself).

public <N1 extends N, V1 extends V> MutableValueGraph<N1, V1>
build()

Returns an empty MutableValueGraph with the properties of this ValueGraphBuilder.

private <N1 extends N, V1 extends V> ValueGraphBuilder<N1, V1>
cast()

pack-priv ValueGraphBuilder<N, V>
copy()

public static ValueGraphBuilder<Object, Object>
directed()

Returns a ValueGraphBuilder for building directed graphs.

public ValueGraphBuilder<N, V>
expectedNodeCount(int expectedNodeCount)

Specifies the expected number of nodes in the graph.

public static <N, V> ValueGraphBuilder<N, V>
from(ValueGraph<N, V> graph)

Returns a ValueGraphBuilder initialized with all properties queryable from graph.

public <N1 extends N, V1 extends V> ImmutableValueGraph.Builder<N1, V1>
immutable()

Returns an ImmutableValueGraph.Builder with the properties of this ValueGraphBuilder.

public <N1 extends N> ValueGraphBuilder<N1, V>
public <N1 extends N> ValueGraphBuilder<N1, V>
nodeOrder(ElementOrder<N1> nodeOrder)

Specifies the order of iteration for the elements of Graph#nodes().

public static ValueGraphBuilder<Object, Object>
undirected()

Returns a ValueGraphBuilder for building undirected graphs.

Constructor Detail

ValueGraphBuilderback to summary
private ValueGraphBuilder(boolean directed)

Creates a new instance with the specified edge directionality.

Method Detail

allowsSelfLoopsback to summary
public ValueGraphBuilder<N, V> allowsSelfLoops(boolean 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 an UnsupportedOperationException.

The default value is false.

Annotations
@CanIgnoreReturnValue
buildback to summary
public <N1 extends N, V1 extends V> MutableValueGraph<N1, V1> build()

Returns an empty MutableValueGraph with the properties of this ValueGraphBuilder.

castback to summary
private <N1 extends N, V1 extends V> ValueGraphBuilder<N1, V1> cast()
Annotations
@SuppressWarnings:unchecked
copyback to summary
pack-priv ValueGraphBuilder<N, V> copy()
directedback to summary
public static ValueGraphBuilder<Object, Object> directed()

Returns a ValueGraphBuilder for building directed graphs.

expectedNodeCountback to summary
public ValueGraphBuilder<N, V> expectedNodeCount(int expectedNodeCount)

Specifies the expected number of nodes in the graph.

Annotations
@CanIgnoreReturnValue
Exceptions
IllegalArgumentException:
if expectedNodeCount is negative
fromback to summary
public static <N, V> ValueGraphBuilder<N, V> from(ValueGraph<N, V> graph)

Returns a ValueGraphBuilder initialized with all properties queryable from graph.

The "queryable" properties are those that are exposed through the ValueGraph interface, such as ValueGraph#isDirected(). Other properties, such as expectedNodeCount(int), are not set in the new builder.

immutableback to summary
public <N1 extends N, V1 extends V> ImmutableValueGraph.Builder<N1, V1> immutable()

Returns an ImmutableValueGraph.Builder with the properties of this ValueGraphBuilder.

The returned builder can be used for populating an ImmutableValueGraph.

Note that the returned builder will always have incidentEdgeOrder set to ElementOrder#stable(), regardless of the value that was set in this builder.

Since
28.0
incidentEdgeOrderback to summary
public <N1 extends N> ValueGraphBuilder<N1, V> incidentEdgeOrder(ElementOrder<N1> incidentEdgeOrder)

Specifies the order of iteration for the elements of ValueGraph#edges(), ValueGraph#adjacentNodes(Object), ValueGraph#predecessors(Object), ValueGraph#successors(Object) and ValueGraph#incidentEdges(Object).

The default value is unordered for mutable graphs. For immutable graphs, this value is ignored; they always have a stable order.

Exceptions
IllegalArgumentException:
if incidentEdgeOrder is not either ElementOrder.unordered() or ElementOrder.stable().
Since
29.0
nodeOrderback to summary
public <N1 extends N> ValueGraphBuilder<N1, V> nodeOrder(ElementOrder<N1> nodeOrder)

Specifies the order of iteration for the elements of Graph#nodes().

The default value is insertion order.

undirectedback to summary
public static ValueGraphBuilder<Object, Object> undirected()

Returns a ValueGraphBuilder for building undirected graphs.