a platform for applying graph algorithms without a persistence layer. http://jgrapht.org/
directed and undirected graphs.
graphs with weighted / unweighted / labeled or any user-defined edges.
various edge multiplicity options, including: simple-graphs, multigraphs, pseudographs.
unmodifiable graphs - allow modules to provide "read-only" access to internal graphs.
listenable graphs - allow external listeners to track modification events.
subgraphs graphs that are auto-updating subgraph views on other graphs.
all compositions of above graphs.