package freenet.support; import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; import java.util.WeakHashMap; public class WeakHashSet extends AbstractSet { private final WeakHashMap map; public WeakHashSet() { map = new WeakHashMap(); } @Override public boolean add(E key) { return map.put(key, null) == null; } @Override public void clear() { map.clear(); } @Override public boolean contains(Object key) { return map.containsKey(key); } @Override public boolean containsAll(Collection arg0) { return map.keySet().containsAll(arg0); } @Override public boolean isEmpty() { return map.isEmpty(); } @Override public Iterator iterator() { return map.keySet().iterator(); } @Override public boolean remove(Object key) { return map.remove(key) != null; } @Override public int size() { return map.size(); } @Override public Object[] toArray() { return map.keySet().toArray(); } @Override public T[] toArray(T[] arg0) { return map.keySet().toArray(arg0); } }