Class IdentityHashSet<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
com.globalmentor.collections.IdentityHashSet<E>
All Implemented Interfaces:
Cloneable, Iterable<E>, Collection<E>, Set<E>

public class IdentityHashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable
A set that is backed by an identity hash map.

This class is not a general-purpose Set implementation! While this class implements the Set interface, it intentionally violates Set's general contract, which mandates the use of the Object.equals(Object) method when comparing objects. This class is designed for use only in the rare cases wherein reference-equality semantics are required.

This class is based upon HashSet 1.28, 01/23/03 by Josh Bloch, Copyright 2003 Sun Microsystems, Inc.

Author:
Garret Wilson
See Also:
  • Constructor Details

    • IdentityHashSet

      public IdentityHashSet()
      Constructs a new, empty set; the backing HashMap instance has default initial capacity (16) and load factor (0.75).
    • IdentityHashSet

      public IdentityHashSet(Collection<E> c)
      Constructs a new set containing the elements in the specified collection. The HashMap is created with default load factor (0.75) and an initial capacity sufficient to contain the elements in the specified collection.
      Parameters:
      c - the collection whose elements are to be placed into this set.
      Throws:
      NullPointerException - if the specified collection is null.
    • IdentityHashSet

      public IdentityHashSet(int initialCapacity)
      Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default load factor, which is 0.75.
      Parameters:
      initialCapacity - the initial capacity of the hash table.
      Throws:
      IllegalArgumentException - if the initial capacity is less than zero.
  • Method Details

    • 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 Collection<E>
      Specified by:
      iterator in interface Iterable<E>
      Specified by:
      iterator in interface Set<E>
      Specified by:
      iterator in class AbstractCollection<E>
      Returns:
      an Iterator over the elements in this set.
      See Also:
    • 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).
    • 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.
    • contains

      public boolean contains(Object o)
      Returns true if this set contains the specified element.
      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.
    • add

      public boolean add(E o)
      Adds the specified element to this set if it is not already present.
      Specified by:
      add in interface Collection<E>
      Specified by:
      add in interface Set<E>
      Overrides:
      add in class AbstractCollection<E>
      Parameters:
      o - element to be added to this set.
      Returns:
      true if the set did not already contain the specified element.
    • remove

      public boolean remove(Object o)
      Removes the specified element from this set if it is present.
      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.
    • 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 HashSet instance: the elements themselves are not cloned.
      Overrides:
      clone in class Object
      Returns:
      a shallow copy of this set.