net.sf.javagimmicks.graph.MapGraph Maven / Gradle / Ivy
package net.sf.javagimmicks.graph;
import java.util.Map;
import java.util.Set;
import net.sf.javagimmicks.lang.Factory;
public class MapGraph> extends AbstractGraph
{
protected final Map> _edges;
protected final EdgeFactory _edgeFactory;
protected final boolean _directed;
MapGraph(Map> edges, Factory extends Set> setFactory, EdgeFactory edgeFactory, boolean directed)
{
super(setFactory);
_edges = edges;
_edgeFactory = edgeFactory;
_directed = directed;
}
public Set edgesOf(V source)
{
return _edges.get(source);
}
public Set vertexSet()
{
return _edges.keySet();
}
@Override
public E addEdge(V source, V target)
{
addVertex(source);
addVertex(target);
final E edge = _edgeFactory.createEdge(this, source, target);
_edges.get(source).add(edge);
if(!_directed)
{
_edges.get(target).add(edge);
}
return edge;
}
@Override
public boolean addVertex(V vertex)
{
if(_edges.containsKey(vertex))
{
return false;
}
_edges.put(vertex, createEdgeSet());
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy