package org.jmeld.util; import java.util.*; public class WeakHashSet<E> extends AbstractSet<E> implements Set<E> { private Boolean value = Boolean.TRUE; private WeakHashMap<E, Boolean> map; public WeakHashSet() { map = new WeakHashMap<E, Boolean>(); } public WeakHashSet(Collection<E> c) { map = new WeakHashMap<E, Boolean>(); addAll(c); } public WeakHashSet(int initialCapacity, float loadFactor) { map = new WeakHashMap<E, Boolean>(initialCapacity, loadFactor); } public WeakHashSet(int initialCapacity) { map = new WeakHashMap<E, Boolean>(initialCapacity); } public Iterator<E> iterator() { return map.keySet().iterator(); } public int size() { return map.size(); } public boolean isEmpty() { return map.isEmpty(); } public boolean contains(Object o) { return map.containsKey(o); } public boolean add(E o) { return map.put(o, value) == null; } public boolean remove(Object o) { return map.remove(o) == value; } public void clear() { map.clear(); } }