I'm not using any proper OO design here, nor Vectors or ArrayLists, just good plain 'ole int arrays. In short, the graph methods manipulate a two-dimensional int array, which serves as the graph's adjucency matrix. You can create a graph with a maximum of 26 vertices, which are labeled automatically from a to z. This should be enough for representing graphs drawn on pen and paper and doing algorithmic experiments.
You can have more than one edge between two vertices and vertices connected to themselves (loops).
Usage:
Graph g1 = new Graph(int numberOfVertexes);
g1.printAdjMatrix();
g1.addE(char v1, char v2);
g1.delE(char v1,char v2);
g1.existsE(char v1,char v2);
g1.degV(char v1);
g1.getE(char v1);