An unmodifiable view of the backing graph specified in the constructor. This graph allows modules
to provide users with "read-only" access to internal graphs. Query operations on this graph "read
through" to the backing graph, and attempts to modify this graph result in an
UnsupportedOperationException.

This graph does not pass the hashCode and equals operations through to the backing graph,
but relies on Object's equals and hashCode methods. This graph will be
serializable if the backing graph is serializable.

Method Detail

addEdge

Creates a new edge in this graph, going from the source vertex to the target vertex, and
returns the created edge. Some graphs do not allow edge-multiplicity. In such cases, if the
graph already contains an edge from the specified source to the specified target, than this
method does not change the graph and returns null.

The source and target vertices must already be contained in this graph. If they are not found
in graph IllegalArgumentException is thrown.

This method creates the new edge e using this graph's edge supplier (see
Graph.getEdgeSupplier()). For the new edge to be added e must not be
equal to any other edge the graph (even if the graph allows edge-multiplicity). More
formally, the graph must not contain any edge e2 such that
e2.equals(e). If such
e2 is found then the newly created edge e is abandoned, the method leaves
this graph unchanged and returns null.

addEdge

Adds the specified edge to this graph, going from the source vertex to the target vertex.
More formally, adds the specified edge,
e, to this graph if this graph contains no edge e2 such that
e2.equals(e). If this graph already contains such an edge, the call leaves this
graph unchanged and returns false. Some graphs do not allow edge-multiplicity. In
such cases, if the graph already contains an edge from the specified source to the specified
target, than this method does not change the graph and returns
false. If the edge was added to the graph, returns
true.

The source and target vertices must already be contained in this graph. If they are not found
in graph IllegalArgumentException is thrown.

addVertex

Adds the specified vertex to this graph if not already present. More formally, adds the
specified vertex, v, to this graph if this graph contains no vertex
u such that
u.equals(v). If this graph already contains such vertex, the call leaves this graph
unchanged and returns false. In combination with the restriction on constructors,
this ensures that graphs never contain duplicate vertices.

removeAllEdges

Removes all the edges in this graph that are also contained in the specified edge collection.
After this call returns, this graph will contain no edges in common with the specified edges.
This method will invoke the Graph.removeEdge(Object) method.

removeAllEdges

Removes all the edges going from the specified source vertex to the specified target vertex,
and returns a set of all removed edges. Returns null if any of the specified
vertices does not exist in the graph. If both vertices exist but no edge is found, returns an
empty set. This method will either invoke the Graph.removeEdge(Object) method, or the
Graph.removeEdge(Object, Object) method.

removeAllVertices

Removes all the vertices in this graph that are also contained in the specified vertex
collection. After this call returns, this graph will contain no vertices in common with the
specified vertices. This method will invoke the Graph.removeVertex(Object) method.

removeEdge

Removes the specified edge from the graph. Removes the specified edge from this graph if it
is present. More formally, removes an edge
e2 such that e2.equals(e), if the graph contains such edge. Returns
true if the graph contained the specified edge. (The graph will not contain the
specified edge once the call returns).

removeVertex

Removes the specified vertex from this graph including all its touching edges if present.
More formally, if the graph contains a vertex
u such that u.equals(v), the call removes all edges that touch
u and then removes u itself. If no such u is found,
the call leaves the graph unchanged. Returns true if the graph contained the
specified vertex. (The graph will not contain the specified vertex once the call returns).