Class ImmutableGraph.Builder<N>

java.lang.Object
com.google.common.graph.ImmutableGraph.Builder<N>
Enclosing class:
ImmutableGraph<N>

public static class ImmutableGraph.Builder<N> extends Object
A builder for creating ImmutableGraph instances, especially static final graphs. Example:

 static final ImmutableGraph<Country> COUNTRY_ADJACENCY_GRAPH =
     GraphBuilder.undirected()
         .<Country>immutable()
         .putEdge(FRANCE, GERMANY)
         .putEdge(FRANCE, BELGIUM)
         .putEdge(GERMANY, BELGIUM)
         .addNode(ICELAND)
         .build();
 

Builder instances can be reused; it is safe to call build() multiple times to build multiple graphs in series. Each new graph contains all the elements of the ones created before it.

Since:
28.0
Author:
James Sexton, Joshua O'Madadhain, Omar Darwish, Jens Nyman
  • Method Details

    • addNode

      Adds node if it is not already present.

      Nodes must be unique, just as Map keys must be. They must also be non-null.

      Returns:
      this Builder object
    • putEdge

      Adds an edge connecting nodeU to nodeV if one is not already present.

      If the graph is directed, the resultant edge will be directed; otherwise, it will be undirected.

      If nodeU and nodeV are not already present in this graph, this method will silently add nodeU and nodeV to the graph.

      Returns:
      this Builder object
      Throws:
      IllegalArgumentException - if the introduction of the edge would violate Graph.allowsSelfLoops()
    • putEdge

      Adds an edge connecting endpoints (in the order, if any, specified by endpoints) if one is not already present.

      If this graph is directed, endpoints must be ordered and the added edge will be directed; if it is undirected, the added edge will be undirected.

      If this graph is directed, endpoints must be ordered.

      If either or both endpoints are not already present in this graph, this method will silently add each missing endpoint to the graph.

      Returns:
      this Builder object
      Throws:
      IllegalArgumentException - if the introduction of the edge would violate Graph.allowsSelfLoops()
      IllegalArgumentException - if the endpoints are unordered and the graph is directed
    • build

      public ImmutableGraph<N> build()
      Returns a newly-created ImmutableGraph based on the contents of this Builder.