1 /* ========================================== 2 * JGraphT : a free Java graph-theory library 3 * ========================================== 4 * 5 * Project Info: http://jgrapht.sourceforge.net/ 6 * Project Creator: Barak Naveh (http://sourceforge.net/users/barak_naveh) 7 * 8 * (C) Copyright 2003-2006, by Barak Naveh and Contributors. 9 * 10 * This library is free software; you can redistribute it and/or modify it 11 * under the terms of the GNU Lesser General Public License as published by 12 * the Free Software Foundation; either version 2.1 of the License, or 13 * (at your option) any later version. 14 * 15 * This library is distributed in the hope that it will be useful, but 16 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 18 * License for more details. 19 * 20 * You should have received a copy of the GNU Lesser General Public License 21 * along with this library; if not, write to the Free Software Foundation, 22 * Inc., 23 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 24 */ 25 /* ---------------- 26 * EdgeSetFactory.java 27 * ---------------- 28 * (C) Copyright 2005-2006, by John V. Sichi and Contributors. 29 * 30 * Original Author: John V. Sichi 31 * Contributor(s): Christian Hammer 32 * 33 * $Id: EdgeSetFactory.java 504 2006-07-03 02:37:26Z perfecthash $ 34 * 35 * Changes 36 * ------- 37 * 01-Jun-2005 : Initial revision (JVS); 38 * 06-Aug-2005 : Made generic (CH); 39 * 07-May-2006 : Renamed and changed from List<Edge> to Set<Edge> (JVS); 40 * 41 */ 42 package org.jgrapht.graph; 43 44 import java.util.*; 45 46 47 /** 48 * A factory for edge sets. This interface allows the creator of a graph to 49 * choose the {@link java.util.Set} implementation used internally by the graph 50 * to maintain sets of edges. This provides control over performance tradeoffs 51 * between memory and CPU usage. 52 * 53 * @author John V. Sichi 54 */ 55 public interface EdgeSetFactory<V, E> 56 { 57 58 //~ Methods --------------------------------------------------------------- 59 60 /** 61 * Create a new edge set for a particular vertex. 62 * 63 * @param vertex the vertex for which the edge set is being created; 64 * sophisticated factories may be able to use this information 65 * to choose an optimal set representation (e.g. 66 * ArrayUnenforcedSet for a vertex expected to have low 67 * degree, and LinkedHashSet for a vertex expected to have 68 * high degree) 69 * 70 * @return new set 71 */ 72 public Set<E> createEdgeSet(V vertex); 73 } 74 75 // End EdgeSetFactory.java 76