Class IdentityHashSet<E>

  • All Implemented Interfaces:
    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.util.Set<E>, java.lang.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:
    HashSet, IdentityHashMap
    • Constructor Summary

      Constructors 
      Constructor Description
      IdentityHashSet()
      Constructs a new, empty set; the backing HashMap instance has default initial capacity (16) and load factor (0.75).
      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.
      IdentityHashSet​(java.util.Collection<E> c)
      Constructs a new set containing the elements in the specified collection.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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 HashSet 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.
      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.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.Set

        addAll, containsAll, equals, hashCode, removeAll, retainAll, spliterator, toArray, toArray
    • Constructor Detail

      • 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​(java.util.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:
        java.lang.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:
        java.lang.IllegalArgumentException - if the initial capacity is less than zero.
    • Method Detail

      • 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.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<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.
        See Also:
        ConcurrentModificationException
      • 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).
      • 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.
      • contains

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

        public boolean add​(E o)
        Adds the specified element to this set if it is not already present.
        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 be added to this set.
        Returns:
        true if the set did not already contain the specified element.
      • remove

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