Package com.google.common.graph
Class ConfigurableMutableNetwork<N,E>
- java.lang.Object
-
- com.google.common.graph.AbstractNetwork<N,E>
-
- com.google.common.graph.ConfigurableNetwork<N,E>
-
- com.google.common.graph.ConfigurableMutableNetwork<N,E>
-
- Type Parameters:
N
- Node parameter typeE
- Edge parameter type
- All Implemented Interfaces:
MutableNetwork<N,E>
,Network<N,E>
final class ConfigurableMutableNetwork<N,E> extends ConfigurableNetwork<N,E> implements MutableNetwork<N,E>
Configurable implementation ofMutableNetwork
that supports both directed and undirected graphs. Instances of this class should be constructed withNetworkBuilder
.Time complexities for mutation methods are all O(1) except for
removeNode(N node)
, which is in O(d_node) where d_node is the degree ofnode
.
-
-
Field Summary
-
Fields inherited from class com.google.common.graph.ConfigurableNetwork
edgeToReferenceNode, nodeConnections
-
-
Constructor Summary
Constructors Constructor Description ConfigurableMutableNetwork(NetworkBuilder<? super N,? super E> builder)
Constructs a mutable graph with the properties specified inbuilder
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addEdge(N nodeU, N nodeV, E edge)
Addsedge
connectingnodeU
tonodeV
.boolean
addNode(N node)
Addsnode
if it is not already present.private NetworkConnections<N,E>
addNodeInternal(N node)
Addsnode
to the graph and returns the associatedNetworkConnections
.private NetworkConnections<N,E>
newConnections()
boolean
removeEdge(java.lang.Object edge)
Removesedge
from this network, if it is present.boolean
removeNode(java.lang.Object node)
Removesnode
if it is present; all edges incident tonode
will also be removed.-
Methods inherited from class com.google.common.graph.ConfigurableNetwork
adjacentNodes, allowsParallelEdges, allowsSelfLoops, checkedConnections, checkedReferenceNode, containsEdge, containsNode, edgeOrder, edges, edgesConnecting, incidentEdges, incidentNodes, inEdges, isDirected, nodeOrder, nodes, outEdges, predecessors, successors
-
Methods inherited from class com.google.common.graph.AbstractNetwork
adjacentEdges, asGraph, degree, inDegree, outDegree, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.google.common.graph.Network
adjacentEdges, adjacentNodes, allowsParallelEdges, allowsSelfLoops, asGraph, degree, edgeOrder, edges, edgesConnecting, equals, hashCode, incidentEdges, incidentNodes, inDegree, inEdges, isDirected, nodeOrder, nodes, outDegree, outEdges, predecessors, successors
-
-
-
-
Constructor Detail
-
ConfigurableMutableNetwork
ConfigurableMutableNetwork(NetworkBuilder<? super N,? super E> builder)
Constructs a mutable graph with the properties specified inbuilder
.
-
-
Method Detail
-
addNode
public boolean addNode(N node)
Description copied from interface:MutableNetwork
Addsnode
if it is not already present.Nodes must be unique, just as
Map
keys must be. They must also be non-null.- Specified by:
addNode
in interfaceMutableNetwork<N,E>
- Returns:
true
if the network was modified as a result of this call
-
addNodeInternal
private NetworkConnections<N,E> addNodeInternal(N node)
Addsnode
to the graph and returns the associatedNetworkConnections
.- Throws:
java.lang.IllegalStateException
- ifnode
is already present
-
addEdge
public boolean addEdge(N nodeU, N nodeV, E edge)
Description copied from interface:MutableNetwork
Addsedge
connectingnodeU
tonodeV
. In an undirected network, the edge will also connectnodeV
tonodeU
.Edges must be unique, just as
Map
keys must be. They must also be non-null.Behavior if
nodeU
andnodeV
are not already present in this network is implementation-dependent. Suggested behaviors include (a) silentlyadding
nodeU
andnodeV
to the network (this is the behavior of the default implementations) or (b) throwingIllegalArgumentException
.If
edge
already connectsnodeU
tonodeV
(in the specified order if this networkNetwork.isDirected()
, else in any order), then this method will have no effect.- Specified by:
addEdge
in interfaceMutableNetwork<N,E>
- Returns:
true
if the network was modified as a result of this call
-
removeNode
public boolean removeNode(java.lang.Object node)
Description copied from interface:MutableNetwork
Removesnode
if it is present; all edges incident tonode
will also be removed.- Specified by:
removeNode
in interfaceMutableNetwork<N,E>
- Returns:
true
if the network was modified as a result of this call
-
removeEdge
public boolean removeEdge(java.lang.Object edge)
Description copied from interface:MutableNetwork
Removesedge
from this network, if it is present.- Specified by:
removeEdge
in interfaceMutableNetwork<N,E>
- Returns:
true
if the network was modified as a result of this call
-
newConnections
private NetworkConnections<N,E> newConnections()
-
-