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

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractSet<E>
          extended by edu.stanford.nlp.util.IdentityHashSet<E>
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.Set<E>

public class IdentityHashSet<E>
extends java.util.AbstractSet<E>
implements java.lang.Cloneable, java.io.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(java.util.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.
 java.lang.Object clone()
          Returns a shallow copy of this IdentityHashSet instance: the elements themselves are not cloned.
 boolean contains(java.lang.Object o)
          Returns true if this set contains the specified element.
 boolean isEmpty()
          Returns true if this set contains no elements.
 java.util.Iterator<E> iterator()
          Returns an iterator over the elements in this set.
static void main(java.lang.String[] args)
          Just for testing.
 boolean remove(java.lang.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, 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(java.util.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 java.util.Collection<E>
Specified by:
add in interface java.util.Set<E>
Overrides:
add in class java.util.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 java.util.Collection<E>
Specified by:
clear in interface java.util.Set<E>
Overrides:
clear in class java.util.AbstractCollection<E>

clone

public java.lang.Object clone()
Returns a shallow copy of this IdentityHashSet instance: the elements themselves are not cloned.

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

contains

public boolean contains(java.lang.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 java.util.Collection<E>
Specified by:
contains in interface java.util.Set<E>
Overrides:
contains in class java.util.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 java.util.Collection<E>
Specified by:
isEmpty in interface java.util.Set<E>
Overrides:
isEmpty in class java.util.AbstractCollection<E>
Returns:
true if this set contains no elements.

iterator

public java.util.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 java.lang.Iterable<E>
Specified by:
iterator in interface java.util.Collection<E>
Specified by:
iterator in interface java.util.Set<E>
Specified by:
iterator in class java.util.AbstractCollection<E>
Returns:
an Iterator over the elements in this set.

remove

public boolean remove(java.lang.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 java.util.Collection<E>
Specified by:
remove in interface java.util.Set<E>
Overrides:
remove in class java.util.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 java.util.Collection<E>
Specified by:
size in interface java.util.Set<E>
Specified by:
size in class java.util.AbstractCollection<E>
Returns:
the number of elements in this set (its cardinality).

main

public static void main(java.lang.String[] args)
Just for testing.



Stanford NLP Group