Graph Interface: Directed Graph

The Graph interface is meant to be a general interface for directed graphs.

/**
 * Graph ADT to represent directed graphs.
 *
 * @param <V> Vertex element type.
 * @param <E> Edge element type.
 */
public interface Graph<V, E> {
  // Operations not shown
}

Let's note that you can use a directed graph to represent an undirected graph.

In fact, a directed Graph is generalization of an undirected graph.

If you need an undirected graph, simply insert two directed edges (presumably with the same data), one in each direction.