Package com.google.common.graph
Class NetworkBuilder<N,E>
- java.lang.Object
-
- com.google.common.graph.NetworkBuilder<N,E>
-
- 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 existingNetworkusingfrom(Network).E- The most general edge type this builder will support. This is normallyObjectunless it is constrained by using a method likeedgeOrder, or the builder is constructed based on an existingNetworkusingfrom(Network).
@Beta public final class NetworkBuilder<N,E> extends java.lang.Object
A builder for constructing instances ofMutableNetworkorImmutableNetworkwith user-defined properties.A
Networkbuilt by this class has the following default properties:- does not allow parallel edges
- does not allow self-loops
- orders
Network.nodes()andNetwork.edges()in the order in which the elements were added (insertion order)
Networks 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 network MutableNetwork<String, Integer> network = NetworkBuilder.directed().allowsParallelEdges(true).build(); flightNetwork.addEdge("LAX", "ATL", 3025); flightNetwork.addEdge("LAX", "ATL", 1598); flightNetwork.addEdge("ATL", "LAX", 2450); // Building a immutable network ImmutableNetwork<String, Integer> immutableNetwork = NetworkBuilder.directed() .allowsParallelEdges(true) .<String, Integer>immutable() .addEdge("LAX", "ATL", 3025) .addEdge("LAX", "ATL", 1598) .addEdge("ATL", "LAX", 2450) .build();- Since:
- 20.0
- Author:
- James Sexton, Joshua O'Madadhain
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description NetworkBuilder<N,E>allowsParallelEdges(boolean allowsParallelEdges)Specifies whether the network will allow parallel edges.NetworkBuilder<N,E>allowsSelfLoops(boolean allowsSelfLoops)Specifies whether the network will allow self-loops (edges that connect a node to itself).<N1 extends N,E1 extends E>
MutableNetwork<N1,E1>build()Returns an emptyMutableNetworkwith the properties of thisNetworkBuilder.static NetworkBuilder<java.lang.Object,java.lang.Object>directed()Returns aNetworkBuilderfor building directed networks.<E1 extends E>
NetworkBuilder<N,E1>edgeOrder(ElementOrder<E1> edgeOrder)Specifies the order of iteration for the elements ofNetwork.edges().NetworkBuilder<N,E>expectedEdgeCount(int expectedEdgeCount)Specifies the expected number of edges in the network.NetworkBuilder<N,E>expectedNodeCount(int expectedNodeCount)Specifies the expected number of nodes in the network.static <N,E>
NetworkBuilder<N,E>from(Network<N,E> network)Returns aNetworkBuilderinitialized with all properties queryable fromnetwork.<N1 extends N,E1 extends E>
ImmutableNetwork.Builder<N1,E1>immutable()Returns anImmutableNetwork.Builderwith the properties of thisNetworkBuilder.<N1 extends N>
NetworkBuilder<N1,E>nodeOrder(ElementOrder<N1> nodeOrder)Specifies the order of iteration for the elements ofNetwork.nodes().static NetworkBuilder<java.lang.Object,java.lang.Object>undirected()Returns aNetworkBuilderfor building undirected networks.
-
-
-
Method Detail
-
directed
public static NetworkBuilder<java.lang.Object,java.lang.Object> directed()
Returns aNetworkBuilderfor building directed networks.
-
undirected
public static NetworkBuilder<java.lang.Object,java.lang.Object> undirected()
Returns aNetworkBuilderfor building undirected networks.
-
from
public static <N,E> NetworkBuilder<N,E> from(Network<N,E> network)
Returns aNetworkBuilderinitialized with all properties queryable fromnetwork.The "queryable" properties are those that are exposed through the
Networkinterface, such asNetwork.isDirected(). Other properties, such asexpectedNodeCount(int), are not set in the new builder.
-
immutable
public <N1 extends N,E1 extends E> ImmutableNetwork.Builder<N1,E1> immutable()
Returns anImmutableNetwork.Builderwith the properties of thisNetworkBuilder.The returned builder can be used for populating an
ImmutableNetwork.- Since:
- 28.0
-
allowsParallelEdges
@CanIgnoreReturnValue public NetworkBuilder<N,E> allowsParallelEdges(boolean allowsParallelEdges)
Specifies whether the network will allow parallel edges. Attempting to add a parallel edge to a network that does not allow them will throw anUnsupportedOperationException.The default value is
false.
-
allowsSelfLoops
@CanIgnoreReturnValue public NetworkBuilder<N,E> allowsSelfLoops(boolean allowsSelfLoops)
Specifies whether the network will allow self-loops (edges that connect a node to itself). Attempting to add a self-loop to a network that does not allow them will throw anUnsupportedOperationException.The default value is
false.
-
expectedNodeCount
@CanIgnoreReturnValue public NetworkBuilder<N,E> expectedNodeCount(int expectedNodeCount)
Specifies the expected number of nodes in the network.- Throws:
java.lang.IllegalArgumentException- ifexpectedNodeCountis negative
-
expectedEdgeCount
@CanIgnoreReturnValue public NetworkBuilder<N,E> expectedEdgeCount(int expectedEdgeCount)
Specifies the expected number of edges in the network.- Throws:
java.lang.IllegalArgumentException- ifexpectedEdgeCountis negative
-
nodeOrder
public <N1 extends N> NetworkBuilder<N1,E> nodeOrder(ElementOrder<N1> nodeOrder)
Specifies the order of iteration for the elements ofNetwork.nodes().The default value is
insertion order.
-
edgeOrder
public <E1 extends E> NetworkBuilder<N,E1> edgeOrder(ElementOrder<E1> edgeOrder)
Specifies the order of iteration for the elements ofNetwork.edges().The default value is
insertion order.
-
build
public <N1 extends N,E1 extends E> MutableNetwork<N1,E1> build()
Returns an emptyMutableNetworkwith the properties of thisNetworkBuilder.
-
-