corda/classpath/java/util/HashSet.java
2007-07-22 13:06:21 -06:00

60 lines
1.1 KiB
Java

package java.util;
public class HashSet<T> implements Set<T> {
private static final Object Value = new Object();
private final HashMap<T, Object> map;
public HashSet(int capacity) {
map = new HashMap(capacity);
}
public HashSet() {
this(0);
}
public int size() {
return map.size();
}
public boolean contains(T element) {
return map.containsKey(element);
}
public boolean add(T element) {
return map.put(element, Value) != Value;
}
public boolean remove(T element) {
return map.remove(element) != Value;
}
public void clear() {
map.clear();
}
public Iterator<T> iterator() {
return new MyIterator(map.iterator());
}
private static class MyIterator<T> implements Iterator<T> {
private final Iterator<Map.Entry<T, Object>> it;
public MyIterator(Iterator<Map.Entry<T, Object>> it) {
this.it = it;
}
public T next() {
return it.next().getKey();
}
public boolean hasNext() {
return it.hasNext();
}
public void remove() {
it.remove();
}
}
}