Class GraphBuilder<N>

  • 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(com.google.common.graph.ElementOrder<N1>), or the builder is constructed based on an existing Graph using from(Graph).

    @Beta
    public final class GraphBuilder<N>
    extends AbstractGraphBuilder<N>
    A builder for constructing instances of MutableGraph or ImmutableGraph with user-defined properties.

    A graph built by this class will have the following properties by default:

    • does not allow self-loops
    • orders 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();
     
    Since:
    20.0
    • Constructor Detail

      • GraphBuilder

        private GraphBuilder​(boolean directed)
        Creates a new instance with the specified edge directionality.
    • Method Detail

      • directed

        public static GraphBuilder<java.lang.Object> directed()
        Returns a GraphBuilder for building directed graphs.
      • undirected

        public static GraphBuilder<java.lang.Object> undirected()
        Returns a GraphBuilder for building undirected graphs.
      • allowsSelfLoops

        public GraphBuilder<N> 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.

      • expectedNodeCount

        public GraphBuilder<N> expectedNodeCount​(int expectedNodeCount)
        Specifies the expected number of nodes in the graph.
        Throws:
        java.lang.IllegalArgumentException - if expectedNodeCount is negative