Package org.jgrapht.graph.guava
Class ImmutableValueGraphAdapter<V,W>
- java.lang.Object
-
- org.jgrapht.graph.AbstractGraph<V,com.google.common.graph.EndpointPair<V>>
-
- org.jgrapht.graph.guava.BaseValueGraphAdapter<V,W,com.google.common.graph.ImmutableValueGraph<V,W>>
-
- org.jgrapht.graph.guava.ImmutableValueGraphAdapter<V,W>
-
- Type Parameters:
V- the graph vertex typeW- the value type
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,org.jgrapht.Graph<V,com.google.common.graph.EndpointPair<V>>
- Direct Known Subclasses:
ImmutableDoubleValueGraphAdapter
public class ImmutableValueGraphAdapter<V,W> extends BaseValueGraphAdapter<V,W,com.google.common.graph.ImmutableValueGraph<V,W>> implements org.jgrapht.Graph<V,com.google.common.graph.EndpointPair<V>>, java.lang.Cloneable, java.io.Serializable
A graph adapter class using Guava'sImmutableValueGraph.The adapter uses class
EndpointPairto represent edges. Since the underlying value graph is immutable, the resulting graph is unmodifiable.The class uses a converter from Guava's values to JGraphT's double weights. Thus, the resulting graph is weighted.
Assume for example that the following class is the value type:
Then one could create an adapter using the following code:class MyValue implements Serializable { private double value; public MyValue(double value) { this.value = value; } public double getValue() { return value; } }MutableValueGraph<String, MyValue> valueGraph = ValueGraphBuilder.directed().allowsSelfLoops(true).build(); valueGraph.addNode("v1"); valueGraph.addNode("v2"); valueGraph.putEdgeValue("v1", "v2", new MyValue(5.0)); ImmutableValueGraph<String, MyValue> immutableValueGraph = ImmutableValueGraph.copyOf(valueGraph); Graph<String, EndpointPair<String>> graph = new ImmutableValueGraphAdapter<>( immutableValueGraph, (ToDoubleFunction<MyValue> & Serializable) MyValue::getValue); double weight = graph.getEdgeWeight(EndpointPair.ordered("v1", "v2")); // should return 5.0- Author:
- Dimitrios Michail
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.StringGRAPH_IS_IMMUTABLE-
Fields inherited from class org.jgrapht.graph.guava.BaseValueGraphAdapter
edgeSupplier, LOOPS_NOT_ALLOWED, unmodifiableEdgeSet, unmodifiableVertexSet, valueConverter, valueGraph, vertexSupplier
-
-
Constructor Summary
Constructors Constructor Description ImmutableValueGraphAdapter(com.google.common.graph.ImmutableValueGraph<V,W> valueGraph, java.util.function.ToDoubleFunction<W> valueConverter)Create a new adapter.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.google.common.graph.EndpointPair<V>addEdge(V sourceVertex, V targetVertex)booleanaddEdge(V sourceVertex, V targetVertex, com.google.common.graph.EndpointPair<V> e)VaddVertex()booleanaddVertex(V v)java.lang.Objectclone()Returns a shallow copy of this graph instance.org.jgrapht.GraphTypegetType()booleanremoveEdge(com.google.common.graph.EndpointPair<V> e)com.google.common.graph.EndpointPair<V>removeEdge(V sourceVertex, V targetVertex)booleanremoveVertex(V v)voidsetEdgeWeight(com.google.common.graph.EndpointPair<V> e, double weight)-
Methods inherited from class org.jgrapht.graph.guava.BaseValueGraphAdapter
containsEdge, containsVertex, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getVertexSupplier, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf, setEdgeSupplier, setVertexSupplier, vertexSet
-
Methods inherited from class org.jgrapht.graph.AbstractGraph
assertVertexExist, containsEdge, equals, hashCode, removeAllEdges, removeAllEdges, removeAllEdges, removeAllVertices, toString, toStringFromSets
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jgrapht.Graph
containsEdge, containsEdge, containsVertex, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getVertexSupplier, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf, removeAllEdges, removeAllEdges, removeAllVertices, setEdgeWeight, vertexSet
-
-
-
-
Field Detail
-
GRAPH_IS_IMMUTABLE
protected static final java.lang.String GRAPH_IS_IMMUTABLE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ImmutableValueGraphAdapter
public ImmutableValueGraphAdapter(com.google.common.graph.ImmutableValueGraph<V,W> valueGraph, java.util.function.ToDoubleFunction<W> valueConverter)
Create a new adapter.- Parameters:
valueGraph- the value graphvalueConverter- a function that converts a value to a double
-
-
Method Detail
-
addEdge
public boolean addEdge(V sourceVertex, V targetVertex, com.google.common.graph.EndpointPair<V> e)
-
addVertex
public boolean addVertex(V v)
-
removeEdge
public com.google.common.graph.EndpointPair<V> removeEdge(V sourceVertex, V targetVertex)
-
removeEdge
public boolean removeEdge(com.google.common.graph.EndpointPair<V> e)
-
removeVertex
public boolean removeVertex(V v)
-
setEdgeWeight
public void setEdgeWeight(com.google.common.graph.EndpointPair<V> e, double weight)
-
getType
public org.jgrapht.GraphType getType()
-
clone
public java.lang.Object clone()
Returns a shallow copy of this graph instance. Neither edges nor vertices are cloned.- Overrides:
clonein classjava.lang.Object- Returns:
- a shallow copy of this graph.
- Throws:
java.lang.RuntimeException- in case the clone is not supported- See Also:
Object.clone()
-
-