Class ImmutableValueGraph.Builder<N,​V>

  • Enclosing class:
    ImmutableValueGraph<N,​V>

    public static class ImmutableValueGraph.Builder<N,​V>
    extends Object
    A builder for creating ImmutableValueGraph instances, especially static final graphs. Example:
    
     static final ImmutableValueGraph<City, Distance> CITY_ROAD_DISTANCE_GRAPH =
         ValueGraphBuilder.undirected()
             .<City, Distance>immutable()
             .putEdgeValue(PARIS, BERLIN, kilometers(1060))
             .putEdgeValue(PARIS, BRUSSELS, kilometers(317))
             .putEdgeValue(BERLIN, BRUSSELS, kilometers(764))
             .addNode(REYKJAVIK)
             .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
    • Method Detail

      • putEdgeValue

        @CanIgnoreReturnValue
        public ImmutableValueGraph.Builder<N,​VputEdgeValue​(N nodeU,
                                                                   N nodeV,
                                                                   V value)
        Adds an edge connecting nodeU to nodeV if one is not already present, and sets a value for that edge to value (overwriting the existing value, if any).

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

        Values do not have to be unique. However, values must be non-null.

        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 ValueGraph.allowsSelfLoops()
      • putEdgeValue

        @CanIgnoreReturnValue
        public ImmutableValueGraph.Builder<N,​VputEdgeValue​(EndpointPair<N> endpoints,
                                                                   V value)
        Adds an edge connecting endpoints if one is not already present, and sets a value for that edge to value (overwriting the existing value, if any).

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

        If this graph is directed, endpoints must be ordered.

        Values do not have to be unique. However, values must be non-null.

        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 ValueGraph.allowsSelfLoops()
        IllegalArgumentException - if the endpoints are unordered and the graph is directed
      • build

        public ImmutableValueGraph<N,​Vbuild()
        Returns a newly-created ImmutableValueGraph based on the contents of this Builder.