N
 The class representing the nodes of the graphE
 The class representing the edges of the graphpublic interface Graph<N,E>
An object which provides relationships between two objects. This interface provides implementation details for the Graph data structure as defined in formal mathematics and computer science theory. Specifically, a graph is defined as a set objects (the nodes) and relations between those objects (the Edges). The graph function G:(N,E,g) is defined so that if g(n1, n2) = e, the edge e is said to connect n1 and n2. The size of a graph is defined to be its number of edges. The number of nodes of a graph is the order of the graph.
A graph can be of two types, directed or undirected. An undirected graph is a graph where the ordering of the nodes defining an edge is not significant, and may be reversed. Formally, g(n1,n2)=g(n2,n1). A directed graph is a graph where g(n1,n2) != g(n2, n1).
This interface implements graphs on arbitrary objects, and conforms to the conventions of the Collections interfaces. It uses generics to allow specific implementations of graphs on specific objects.
Modifier and Type  Interface and Description 

static interface 
Graph.Segment<N,E>
Edge segments are composed of an edge and its two connected nodes.

Modifier and Type  Method and Description 

boolean 
add(N node)
Add a node to the graph

void 
addAll(Graph<? extends N,? extends E> graph)
Add all elements from the specified graph to this graph.

boolean 
addEdge(E edge,
N orig,
N dest)
Add the edge element to the graph.

void 
clear()
Clear all nodes and edges from this graph

boolean 
contains(java.lang.Object obj)
Determines whether the given object is a node within this graph.

boolean 
containsEdge(java.lang.Object obj)
Determines whether the given object is an edge within this graph.

java.util.Iterator<E> 
edgeIterator()
Return an iterator over the set of edges for this graph.

boolean 
equals(java.lang.Object obj)
Determine whether another object is the same as this graph.

E 
getEdge(N n1,
N n2)
Get the edge between two nodes

Graph.Segment<N,E> 
getEdgeSegment(E edge)
Get the edge segment for the specified edge

java.util.Set<E> 
getEdgeSet()
Get the set of edges for this graph

java.util.Set<E> 
getNodeEdges(N node)
Get the set of edges which connect to a particular node.

java.util.Set<N> 
getNodeSet()
Get the set of nodes for this graph

java.util.Set<Graph.Segment<N,E>> 
getSegmentSet()
Get the set of edge segments for this graph

int 
hashCode()
Get the hashcode for this graph

boolean 
isDirected()
Return whether this graph is a directed graph

boolean 
isEmpty()
Return whether the graph is empty.

java.util.Iterator<N> 
iterator()
Return an iterator over the set of nodes for this graph.

int 
order()
Return the order of the graph.

boolean 
remove(java.lang.Object obj)
Remove an object from the graph.

boolean 
removeEdge(java.lang.Object edge)
Remove the edge from the graph

int 
size()
Return the size of the graph.

boolean add(N node)
node
 the node to addvoid addAll(Graph<? extends N,? extends E> graph)
graph
 the graph to addboolean addEdge(E edge, N orig, N dest)
edge
 the edge to addorig
 the origin nodedest
 the destination nodevoid clear()
boolean contains(java.lang.Object obj)
obj
 the object to testboolean containsEdge(java.lang.Object obj)
obj
 the object to testjava.util.Iterator<E> edgeIterator()
boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
obj
 the object to testE getEdge(N n1, N n2)
n1
 The first noden2
 The second nodeGraph.Segment<N,E> getEdgeSegment(E edge)
edge
 the edgejava.util.Set<E> getEdgeSet()
java.util.Set<E> getNodeEdges(N node)
node
 the node to checkjava.util.Set<N> getNodeSet()
java.util.Set<Graph.Segment<N,E>> getSegmentSet()
int hashCode()
hashCode
in class java.lang.Object
boolean isDirected()
boolean isEmpty()
java.util.Iterator<N> iterator()
int order()
boolean remove(java.lang.Object obj)
obj
 the object to removeboolean removeEdge(java.lang.Object edge)
edge
 the edge to removeint size()