Graph theory is an exceptionally rich area for programmers and designers. Graphs can be used to solve some very complex problems, such as least cost routing, mapping, program analysis, and so on.
Network devices, such as routers and switches, use graphs to calculate optimal routing for traffic.
Far from being difficult to understand, graphs lend themselves well to Java implementation. As usual with Java and as I’ve often remarked in the past, you get a lot of power from a really small amount of code.
As I’ve mentioned a few times recently, I always believe in helping programmers move up the value chain—a topic I discuss at length in my eBook (see reference) and recent article on the topic (see reference).
So feel free to look at the following and similar resources.