## edu.stanford.nlp.util
Class IdentityHashSet<E>

    java.lang.Object
      java.util.AbstractCollection<E>
          java.util.AbstractSet<E>
              edu.stanford.nlp.util.IdentityHashSet<E>

All Implemented Interfaces:
  Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

    public class IdentityHashSet<E>

extends AbstractSet<E>
implements Set<E>, Cloneable, Serializable

This class provides a `IdentityHashMap`-backed implementation of the `Set` interface. This means that whether an object is an element of the set depends on whether it is == (rather than `equals()`) to an element of the set. This is different from a normal `HashSet`, where set membership depends on `equals()`, rather than ==. Each element in the set is a key in the backing IdentityHashMap; each key maps to a static token, denoting that the key does, in fact, exist. Most operations are O(1), assuming no hash collisions. In the worst case (where all hashes collide), operations are O(n).

Author:
  Bill MacCartney
See Also:
  Serialized Form

Constructor Summary
`IdentityHashSet()` Construct a new, empty IdentityHashSet whose backing IdentityHashMap has the default expected maximum size (21);
`IdentityHashSet(Collection<? extends E> c)` Construct a new IdentityHashSet with the same elements as the supplied Collection (eliminating any duplicates, of course); the backing IdentityHashMap will have the default expected maximum size (21).
`IdentityHashSet(int expectedMaxSize)` Construct a new, empty IdentityHashSet whose backing IdentityHashMap has the specified expected maximum size.

Method Summary
`boolean` `add(E o)` Adds the specified element to this set if it is not already present.
`void` `clear()` Removes all of the elements from this set.
`Object` `clone()` Returns a shallow copy of this `IdentityHashSet` instance: the elements themselves are not cloned.
`boolean` `contains(Object o)` Returns true if this set contains the specified element.
`boolean` `isEmpty()` Returns `true` if this set contains no elements.
`Iterator<E>` `iterator()` Returns an iterator over the elements in this set.
`static void` `main(String[] args)` Just for testing.
`boolean` `remove(Object o)` Removes the specified element from this set if it is present.
`int` `size()` Returns the number of elements in this set (its cardinality).

Methods inherited from class java.util.AbstractSet
`equals, hashCode, removeAll`

Methods inherited from class java.util.AbstractCollection
`addAll, containsAll, retainAll, toArray, toArray, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.util.Set
`addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray`

Constructor Detail

### IdentityHashSet

    public IdentityHashSet()

  Construct a new, empty IdentityHashSet whose backing IdentityHashMap has the default expected maximum size (21);

### IdentityHashSet

    public IdentityHashSet(int expectedMaxSize)

  Construct a new, empty IdentityHashSet whose backing IdentityHashMap has the specified expected maximum size. Putting more than the expected number of elements into the set may cause the internal data structure to grow, which may be somewhat time-consuming.

  Parameters:
    `expectedMaxSize` - the expected maximum size of the set.

### IdentityHashSet

    public IdentityHashSet(Collection<? extends E> c)

  Construct a new IdentityHashSet with the same elements as the supplied Collection (eliminating any duplicates, of course); the backing IdentityHashMap will have the default expected maximum size (21).

  Parameters:
    `c` - a Collection containing the elements with which this set will be initialized.

Method Detail

### add

    public boolean add(E o)

  Adds the specified element to this set if it is not already present. Remember that this set implementation uses == (not `equals()`) to test whether an element is present in the set.

  Specified by:
    `add` in interface `Collection<E>`
  Specified by:
    `add` in interface `Set<E>`
  Overrides:
    `add` in class `AbstractCollection<E>`
  Parameters:
    `o` - element to add to this set
  Returns:
    true if the element was added, false otherwise

### clear

    public void clear()

  Removes all of the elements from this set.

  Specified by:
    `clear` in interface `Collection<E>`
  Specified by:
    `clear` in interface `Set<E>`
  Overrides:
    `clear` in class `AbstractCollection<E>`

### clone

    public Object clone()

  Returns a shallow copy of this `IdentityHashSet` instance: the elements themselves are not cloned.

  Overrides:
    `clone` in class `Object`
  Returns:
    a shallow copy of this set.

### contains

    public boolean contains(Object o)

  Returns true if this set contains the specified element. Remember that this set implementation uses == (not `equals()`) to test whether an element is present in the set.

  Specified by:
    `contains` in interface `Collection<E>`
  Specified by:
    `contains` in interface `Set<E>`
  Overrides:
    `contains` in class `AbstractCollection<E>`
  Parameters:
    `o` - Element whose presence in this set is to be tested.
  Returns:
    `true` if this set contains the specified element.

### isEmpty

    public boolean isEmpty()

  Returns `true` if this set contains no elements.

  Specified by:
    `isEmpty` in interface `Collection<E>`
  Specified by:
    `isEmpty` in interface `Set<E>`
  Overrides:
    `isEmpty` in class `AbstractCollection<E>`
  Returns:
    `true` if this set contains no elements.

### iterator

    public Iterator<E> iterator()

  Returns an iterator over the elements in this set. The elements are returned in no particular order.

  Specified by:
    `iterator` in interface `Iterable<E>`
  Specified by:
    `iterator` in interface `Collection<E>`
  Specified by:
    `iterator` in interface `Set<E>`
  Specified by:
    `iterator` in class `AbstractCollection<E>`
  Returns:
    an `Iterator` over the elements in this set.

### remove

    public boolean remove(Object o)

  Removes the specified element from this set if it is present. Remember that this set implementation uses == (not `equals()`) to test whether an element is present in the set.

  Specified by:
    `remove` in interface `Collection<E>`
  Specified by:
    `remove` in interface `Set<E>`
  Overrides:
    `remove` in class `AbstractCollection<E>`
  Parameters:
    `o` - Object to be removed from this set, if present.
  Returns:
    `true` if the set contained the specified element.

### size

    public int size()

  Returns the number of elements in this set (its cardinality).

  Specified by:
    `size` in interface `Collection<E>`
  Specified by:
    `size` in interface `Set<E>`
  Specified by:
    `size` in class `AbstractCollection<E>`
  Returns:
    the number of elements in this set (its cardinality).

### main

    public static void main(String[] args)

  Just for testing.

Stanford NLP Group