Class MutableDoubleValueGraphAdapter<V>

  • Type Parameters:
    V - the graph vertex type
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, Graph<V,​com.google.common.graph.EndpointPair<V>>

    public class MutableDoubleValueGraphAdapter<V>
    extends MutableValueGraphAdapter<V,​java.lang.Double>
    A graph adapter class using Guava's MutableValueGraph specialized with double values.

    The adapter uses class EndpointPair to represent edges. Changes in the adapter such as adding or removing vertices and edges are reflected in the underlying value graph.

    Each edge in MutableValueGraph is associated with a double value which is mapped to the edge weight in the resulting Graph. Thus, the graph is weighted and calling methods Graph.getEdgeWeight(Object) and setEdgeWeight(EndpointPair, double) will get and set the value of an edge.

    See the example below on how to create such an adapter:

     MutableValueGraph<String, Double> mutableValueGraph =
         ValueGraphBuilder.directed().allowsSelfLoops(true).build();
     
     mutableValueGraph.addNode("v1");
     mutableValueGraph.addNode("v2");
     mutableValueGraph.putEdgeValue("v1", "v2", 3.0);
     
     Graph<String, EndpointPair<String>> graph = new MutableDoubleValueGraphAdapter<>(mutableValueGraph);
     
     System.out.println(graph.getEdgeWeight(EndpointPair.ordered("v1", "v2")); // outputs 3.0
     
     graph.setEdgeWeight(EndpointPair.ordered("v1", "v2"), 7.0);
     
     System.out.println(graph.getEdgeWeight(EndpointPair.ordered("v1", "v2")); // outputs 7.0
     
    Author:
    Dimitrios Michail
    See Also:
    Serialized Form
    • Constructor Detail

      • MutableDoubleValueGraphAdapter

        public MutableDoubleValueGraphAdapter​(com.google.common.graph.MutableValueGraph<V,​java.lang.Double> valueGraph)
        Create a new adapter.
        Parameters:
        valueGraph - the value graph
      • MutableDoubleValueGraphAdapter

        public MutableDoubleValueGraphAdapter​(com.google.common.graph.MutableValueGraph<V,​java.lang.Double> valueGraph,
                                              java.util.function.Supplier<V> vertexSupplier,
                                              java.util.function.Supplier<com.google.common.graph.EndpointPair<V>> edgeSupplier)
        Create a new adapter.
        Parameters:
        valueGraph - the value graph
        vertexSupplier - the vertex supplier
        edgeSupplier - the edge supplier
    • Method Detail

      • setEdgeWeight

        public void setEdgeWeight​(com.google.common.graph.EndpointPair<V> e,
                                  double weight)
        Description copied from class: MutableValueGraphAdapter
        Assigns a weight to an edge. This method always throws an UnsupportedOperationException since the adapter works one-way from values to weights. Adjusting the weights can be done by adjusting the values in the underlying ValueGraph which will automatically be propagated using the provided converter.
        Specified by:
        setEdgeWeight in interface Graph<V,​com.google.common.graph.EndpointPair<V>>
        Overrides:
        setEdgeWeight in class MutableValueGraphAdapter<V,​java.lang.Double>
        Parameters:
        e - edge on which to set weight
        weight - new weight for edge