/** * Adds all elements of {@code graph} to the graph being built. * * @throws IllegalArgumentException under either of two conditions: (1) the {@code GraphConfig} * objects held by the graph being built and by {@code graph} are not compatible (2) calling * {@code Graph.addEdge(e, n1, n2)} on the graph being built throws IAE * @see Graph#addEdge(e, n1, n2) */ public Builder<N, E> addGraph(UndirectedGraph<N, E> graph) { checkArgument( undirectedGraph.config().compatibleWith(graph.config()), "GraphConfigs for input and for graph being built are not compatible: input: %s, " + "this graph: %s", graph.config(), undirectedGraph.config()); for (N node : graph.nodes()) { undirectedGraph.addNode(node); } for (E edge : graph.edges()) { Graphs.addEdge(undirectedGraph, edge, graph.incidentNodes(edge)); } return this; }
/** Creates a new builder with the default graph configuration. */ public Builder() { this(Graphs.<N, E>createUndirected()); }
/** Creates a new builder with the specified configuration. */ public Builder(GraphConfig config) { this(Graphs.<N, E>createUndirected(config)); }
@Override public boolean equals(@Nullable Object object) { return (object instanceof UndirectedGraph) && Graphs.equal(this, (UndirectedGraph) object); }