package commons;

import java.util.*;

/**
 * @author Eric Bodden
 */

public class IdentityHashSet<Element_Type> {
    private final IdentityHashMap<Element_Type, Element_Type> _internalMap;
    
    public IdentityHashSet() {
        _internalMap = new IdentityHashMap<Element_Type, Element_Type>();
    }

    public boolean add(Element_Type element) {
        return _internalMap.put(element, element) != null;
    }

    public boolean isEmpty() {
        return _internalMap.isEmpty();
    }

    public void remove(Element_Type element) {
        _internalMap.remove(element);
    }
    
    public Iterator<Element_Type> iterator() {
        return _internalMap.keySet().iterator();
    }
 
    public boolean contains(Element_Type element) {
        return _internalMap.containsKey(element);
    }
    
    public int size() {
        return _internalMap.size();
    }

    public void clear() {
	_internalMap.clear();
    }
    
    public String toString() {
        String string = "[ ";
        for (Element_Type element : _internalMap.keySet()) {
            string += element.toString() + " ";
        }
        string += "]";
        return string;
    }
}
