V - the graph vertex typeW - the value typepublic class ImmutableValueGraphAdapter<V,W> extends BaseValueGraphAdapter<V,W,com.google.common.graph.ImmutableValueGraph<V,W>> implements Graph<V,com.google.common.graph.EndpointPair<V>>, java.lang.Cloneable, java.io.Serializable
ImmutableValueGraph.
The adapter uses class EndpointPair to 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:
class MyValue
implements
Serializable
{
private double value;
public MyValue(double value)
{
this.value = value;
}
public double getValue()
{
return value;
}
}
Then one could create an adapter using the following code:
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
| Modifier and Type | Field and Description |
|---|---|
protected static java.lang.String |
GRAPH_IS_IMMUTABLE |
edgeSupplier, LOOPS_NOT_ALLOWED, unmodifiableEdgeSet, unmodifiableVertexSet, valueConverter, valueGraph, vertexOrder, vertexOrderMethod, vertexSupplierDEFAULT_EDGE_WEIGHT| Constructor and Description |
|---|
ImmutableValueGraphAdapter(com.google.common.graph.ImmutableValueGraph<V,W> valueGraph,
java.util.function.ToDoubleFunction<W> valueConverter)
Create a new adapter.
|
| Modifier and Type | Method and Description |
|---|---|
com.google.common.graph.EndpointPair<V> |
addEdge(V sourceVertex,
V targetVertex) |
boolean |
addEdge(V sourceVertex,
V targetVertex,
com.google.common.graph.EndpointPair<V> e) |
V |
addVertex() |
boolean |
addVertex(V v) |
java.lang.Object |
clone()
Returns a shallow copy of this graph instance.
|
GraphType |
getType() |
boolean |
removeEdge(com.google.common.graph.EndpointPair<V> e) |
com.google.common.graph.EndpointPair<V> |
removeEdge(V sourceVertex,
V targetVertex) |
boolean |
removeVertex(V v) |
void |
setEdgeWeight(com.google.common.graph.EndpointPair<V> e,
double weight) |
containsEdge, containsVertex, createVertexOrder, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getVertexSupplier, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf, setEdgeSupplier, setVertexSupplier, vertexSetassertVertexExist, containsEdge, equals, hashCode, removeAllEdges, removeAllEdges, removeAllEdges, removeAllVertices, toString, toStringFromSetsfinalize, getClass, notify, notifyAll, wait, wait, waitcontainsEdge, containsEdge, containsVertex, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getVertexSupplier, incomingEdgesOf, inDegreeOf, iterables, outDegreeOf, outgoingEdgesOf, removeAllEdges, removeAllEdges, removeAllVertices, setEdgeWeight, vertexSetprotected static final java.lang.String GRAPH_IS_IMMUTABLE
public ImmutableValueGraphAdapter(com.google.common.graph.ImmutableValueGraph<V,W> valueGraph, java.util.function.ToDoubleFunction<W> valueConverter)
valueGraph - the value graphvalueConverter - a function that converts a value to a doublepublic boolean addEdge(V sourceVertex, V targetVertex, com.google.common.graph.EndpointPair<V> e)
public V addVertex()
public boolean addVertex(V v)
public com.google.common.graph.EndpointPair<V> removeEdge(V sourceVertex, V targetVertex)
removeEdge in interface Graph<V,com.google.common.graph.EndpointPair<V>>public boolean removeEdge(com.google.common.graph.EndpointPair<V> e)
removeEdge in interface Graph<V,com.google.common.graph.EndpointPair<V>>public boolean removeVertex(V v)
removeVertex in interface Graph<V,com.google.common.graph.EndpointPair<V>>public void setEdgeWeight(com.google.common.graph.EndpointPair<V> e, double weight)
setEdgeWeight in interface Graph<V,com.google.common.graph.EndpointPair<V>>public GraphType getType()
public java.lang.Object clone()
clone in class java.lang.Objectjava.lang.RuntimeException - in case the clone is not supportedObject.clone()Copyright © 2021. All rights reserved.