package edu.berkeley.nlp.util; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; /** * The MapFactory is a mechanism for specifying what kind of map is to be used * by some object. For example, if you want a Counter which is backed by an * IdentityHashMap instead of the defaul HashMap, you can pass in an * IdentityHashMapFactory. * * @author Dan Klein */ public abstract class SetFactory<K> implements Serializable { public static class HashSetFactory<K> extends SetFactory<K> { private static final long serialVersionUID = 1L; @Override public Set<K> buildSet() { return new HashSet<K>(); } } public static class IdentityHashMapFactory<K> extends SetFactory<K> { private static final long serialVersionUID = 1L; @Override public Set<K> buildSet() { return new IdentityHashSet<K>(); } } public static class TreeMapFactory<K> extends SetFactory<K> { private static final long serialVersionUID = 1L; @Override public Set<K> buildSet() { return new TreeSet<K>(); } } public abstract Set<K> buildSet(); }