All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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> 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