edu.uci.ics.jung.graph.impl
Class LeanSparseVertex

java.lang.Object
  extended by edu.uci.ics.jung.utils.UserDataDelegate
      extended by edu.uci.ics.jung.graph.impl.AbstractElement
          extended by edu.uci.ics.jung.graph.impl.AbstractArchetypeVertex
              extended by edu.uci.ics.jung.graph.impl.AbstractSparseVertex
                  extended by edu.uci.ics.jung.graph.impl.LeanSparseVertex
All Implemented Interfaces:
ArchetypeVertex, Element, Vertex, UserDataContainer, Cloneable

public class LeanSparseVertex
extends AbstractSparseVertex

This fully functional class is provided as a different sort of way to think about the creation and use of Vertices, and a reminder that the user is always welcome to create their own vertices. While most vertex classes keep a table from neighboring vertex to edge, this one keeps a linked list. This reduces the memory footprint, but makes findEdge() (as well as most other methods) require time proportional to the vertex's degree.

Author:
Joshua O'Madadhain

Nested Class Summary
 
Nested classes/interfaces inherited from interface edu.uci.ics.jung.utils.UserDataContainer
UserDataContainer.CopyAction
 
Field Summary
protected  List incident_edges
           
 
Fields inherited from class edu.uci.ics.jung.graph.impl.AbstractElement
id, m_Graph
 
Fields inherited from class edu.uci.ics.jung.utils.UserDataDelegate
factory, udc_delegate
 
Constructor Summary
LeanSparseVertex()
           
 
Method Summary
protected  void addNeighbor_internal(Edge e, Vertex v)
          Adds the specified edge e and vertex v to the internal data structures of this vertex.
 Set findEdgeSet(Vertex w)
          Returns the set of all edges that connect this vertex with the specified vertex v.
protected  Collection getEdges_internal()
          Returns a set containing all the incident edges of this vertex.
 Set getInEdges()
          Returns the set of incoming edges of this vertex.
protected  Collection getNeighbors_internal()
          Returns a set containing all neighbors of this vertex.
 Set getOutEdges()
          Returns the set of outgoing edges of this vertex.
 Set getPredecessors()
          Returns the set of predecessors of this vertex.
 Set getSuccessors()
          Returns the set of successors of this vertex.
 int inDegree()
          Returns the number of incoming edges that are incident to this vertex.
protected  void initialize()
          Initializes all the data structures for this element.
 boolean isDest(Edge e)
          Returns true if this vertex is a destination of the specified edge e, and false otherwise.
 boolean isPredecessorOf(Vertex v)
          Returns true if this vertex is a predecessor of the specified vertex v, and false otherwise.
 boolean isSource(Edge e)
          Returns true if this vertex is a source of the specified edge e, and false otherwise.
 boolean isSuccessorOf(Vertex v)
          Returns true if this vertex is a successor of the specified vertex v, and false otherwise.
 int numPredecessors()
          Returns the number of predecessors of this vertex.
 int numSuccessors()
          Returns the number of successors of this vertex.
 int outDegree()
          Returns the number of outgoing edges that are incident to this vertex.
protected  void removeNeighbor_internal(Edge e, Vertex v)
          Removes the specified edge e and vertex v from the internal data structures of this vertex.
 
Methods inherited from class edu.uci.ics.jung.graph.impl.AbstractSparseVertex
copy, findEdge, findEdge, findEdgeSet, toString
 
Methods inherited from class edu.uci.ics.jung.graph.impl.AbstractArchetypeVertex
degree, equals, getEqualVertex, getEquivalentVertex, getIncidentEdges, getIncidentElements, getNeighbors, isIncident, isNeighborOf, numNeighbors
 
Methods inherited from class edu.uci.ics.jung.graph.impl.AbstractElement
addGraph_internal, getGraph, hashCode, removeGraph_internal
 
Methods inherited from class edu.uci.ics.jung.utils.UserDataDelegate
addUserDatum, clone, containsUserDatumKey, getUserDatum, getUserDatumCopyAction, getUserDatumKeyIterator, importUserData, removeUserDatum, setUserDataFactory, setUserDatum
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.uci.ics.jung.graph.ArchetypeVertex
degree, getEqualVertex, getEquivalentVertex, getIncidentEdges, getNeighbors, isIncident, isNeighborOf, numNeighbors
 
Methods inherited from interface edu.uci.ics.jung.graph.Element
getGraph, getIncidentElements
 
Methods inherited from interface edu.uci.ics.jung.utils.UserDataContainer
addUserDatum, clone, containsUserDatumKey, getUserDatum, getUserDatumCopyAction, getUserDatumKeyIterator, importUserData, removeUserDatum, setUserDatum
 

Field Detail

incident_edges

protected List incident_edges
Constructor Detail

LeanSparseVertex

public LeanSparseVertex()
Method Detail

initialize

protected void initialize()
Description copied from class: AbstractElement
Initializes all the data structures for this element. (This is used on cloned elements, since clone() copies some information that should not be in the new element.)

Overrides:
initialize in class AbstractElement

getNeighbors_internal

protected Collection getNeighbors_internal()
Description copied from class: AbstractArchetypeVertex
Returns a set containing all neighbors of this vertex. This is an internal method which is not intended for users.

Specified by:
getNeighbors_internal in class AbstractArchetypeVertex
See Also:
AbstractArchetypeVertex.getNeighbors_internal()

getEdges_internal

protected Collection getEdges_internal()
Description copied from class: AbstractArchetypeVertex
Returns a set containing all the incident edges of this vertex. This is an internal method which is not intended for users.

Specified by:
getEdges_internal in class AbstractArchetypeVertex
See Also:
AbstractArchetypeVertex.getEdges_internal()

addNeighbor_internal

protected void addNeighbor_internal(Edge e,
                                    Vertex v)
Description copied from class: AbstractSparseVertex
Adds the specified edge e and vertex v to the internal data structures of this vertex.

Specified by:
addNeighbor_internal in class AbstractSparseVertex
Parameters:
e - the new incident edge of this vertex
v - the new neighbor of this vertex
See Also:
AbstractSparseVertex.addNeighbor_internal(edu.uci.ics.jung.graph.Edge, edu.uci.ics.jung.graph.Vertex)

removeNeighbor_internal

protected void removeNeighbor_internal(Edge e,
                                       Vertex v)
Description copied from class: AbstractSparseVertex
Removes the specified edge e and vertex v from the internal data structures of this vertex.

Specified by:
removeNeighbor_internal in class AbstractSparseVertex
Parameters:
e - the incident edge of this vertex which is being removed
v - the neighbor of this vertex which is being removed
See Also:
AbstractSparseVertex.removeNeighbor_internal(edu.uci.ics.jung.graph.Edge, edu.uci.ics.jung.graph.Vertex)

findEdgeSet

public Set findEdgeSet(Vertex w)
Description copied from interface: Vertex
Returns the set of all edges that connect this vertex with the specified vertex v. Each edge in this set will be either a directed outgoing edge from this vertex to v, or an undirected edge connecting this vertex to v. findEdge(v) may be used to return a single (arbitrary) element of this set. If v is not connected to this vertex, returns an empty Set.

Specified by:
findEdgeSet in interface Vertex
Overrides:
findEdgeSet in class AbstractSparseVertex
See Also:
Vertex.findEdgeSet(Vertex)

getPredecessors

public Set getPredecessors()
Description copied from interface: Vertex
Returns the set of predecessors of this vertex. A vertex v is a predecessor of this vertex if and only if v.isPredecessorOf(this) returns true. Each element of the set returned should implement Vertex.

Returns:
all predecessors of this vertex
See Also:
Vertex.getPredecessors()

getSuccessors

public Set getSuccessors()
Description copied from interface: Vertex
Returns the set of successors of this vertex. A vertex v is a successor of this vertex if and only if v.isSuccessorOf(this) returns true. Each element of the set returned should implement Vertex.

Returns:
all successors of this vertex
See Also:
Vertex.getSuccessors()

getInEdges

public Set getInEdges()
Description copied from interface: Vertex
Returns the set of incoming edges of this vertex. An edge e is an incoming edge of this vertex if and only if this.isDest(e) returns true. Each element of the set returned should implement Edge.

Returns:
all edges whose destination is this vertex
See Also:
Vertex.getInEdges()

getOutEdges

public Set getOutEdges()
Description copied from interface: Vertex
Returns the set of outgoing edges of this vertex. An edge e is an outgoing edge of this vertex if and only if this.isSource(e) returns true. Each element of the set returned should implement Edge.

Returns:
all edges whose source is this vertex
See Also:
Vertex.getOutEdges()

inDegree

public int inDegree()
Description copied from interface: Vertex
Returns the number of incoming edges that are incident to this vertex.

Returns:
the number of incoming edges of this vertex
See Also:
Vertex.inDegree()

outDegree

public int outDegree()
Description copied from interface: Vertex
Returns the number of outgoing edges that are incident to this vertex.

Returns:
the number of outgoing edges of this vertex
See Also:
Vertex.outDegree()

numPredecessors

public int numPredecessors()
Description copied from interface: Vertex
Returns the number of predecessors of this vertex.

See Also:
Vertex.numPredecessors()

numSuccessors

public int numSuccessors()
Description copied from interface: Vertex
Returns the number of successors of this vertex.

See Also:
Vertex.numSuccessors()

isSuccessorOf

public boolean isSuccessorOf(Vertex v)
Description copied from interface: Vertex
Returns true if this vertex is a successor of the specified vertex v, and false otherwise. This vertex is a successor of v if and only if there exists an edge e such that v.isSource(e) == true and this.isDest(e) == true. The behavior of this method is undefined if v is not an element of this vertex's graph.

See Also:
Vertex.isSuccessorOf(edu.uci.ics.jung.graph.Vertex)

isPredecessorOf

public boolean isPredecessorOf(Vertex v)
Description copied from interface: Vertex
Returns true if this vertex is a predecessor of the specified vertex v, and false otherwise. This vertex is a predecessor of v if and only if there exists an edge e such that this.isSource(e) == true and v.isDest(e) == true. The behavior of this method is undefined if v is not an element of this vertex's graph.

See Also:
Vertex.isPredecessorOf(edu.uci.ics.jung.graph.Vertex)

isSource

public boolean isSource(Edge e)
Description copied from interface: Vertex
Returns true if this vertex is a source of the specified edge e, and false otherwise. A vertex v is a source of e if e is an outgoing edge of v. The behavior of this method is undefined if e is not an element of this vertex's graph.

See Also:
Vertex.isSource(edu.uci.ics.jung.graph.Edge)

isDest

public boolean isDest(Edge e)
Description copied from interface: Vertex
Returns true if this vertex is a destination of the specified edge e, and false otherwise. A vertex v is a destination of e if e is an incoming edge of v. The behavior of this method is undefined if e is not an element of this vertex's graph.

See Also:
Vertex.isDest(edu.uci.ics.jung.graph.Edge)