Class WeakHashSet<E>

  • Type Parameters:
    E - The type of elements in the set.
    All Implemented Interfaces:
    Iterable<E>, Collection<E>, Set<E>, CheckedCollection<E>
    Direct Known Subclasses:
    CanonicalSet

    public class WeakHashSet<E>
    extends AbstractSet<E>
    implements CheckedCollection<E>
    A set of objects hold by weak references. An entry in a WeakHashSet will automatically be removed when it is no longer in ordinary use. More precisely, the presence of an entry will not prevent the entry from being discarded by the garbage collector, that is, made finalizable, finalized, and then reclaimed. When an entry has been discarded it is effectively removed from the set, so this class behaves somewhat differently than other Set implementations.

    If you would like to use WeakHashSet as inside a factory to prevent creating duplicate immutable objects, please look at the CanonicalSet subclass.

    The WeakHashSet class is thread-safe.

    Since:
    2.0
    Author:
    Martin Desruisseaux (IRD)
    See Also:
    WeakHashMap
    • Constructor Detail

      • WeakHashSet

        public WeakHashSet​(Class<E> type)
        Constructs a WeakHashSet.
        Parameters:
        type - The type of the element to be included in this set.
        Since:
        2.5
    • Method Detail

      • contains

        public boolean contains​(Object obj)
        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:
        obj - Object to be checked for containment in this set.
        Returns:
        true if this set contains the specified element.
      • remove

        public boolean remove​(Object obj)
        Removes a single instance of 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:
        obj - element to be removed from this set, if present.
        Returns:
        true if the set contained the specified element.
      • add

        public boolean add​(E obj)
        Adds the specified element to this set if it is not already present. If this set already contains the specified element, the call leaves this set unchanged and returns false.
        Specified by:
        add in interface Collection<E>
        Specified by:
        add in interface Set<E>
        Overrides:
        add in class AbstractCollection<E>
        Parameters:
        obj - Element to be added to this set.
        Returns:
        true if this set did not already contain the specified element.
      • toArray

        public E[] toArray()
        Returns a view of this set as an array. Elements will be in an arbitrary order. Note that this array contains strong reference. Consequently, no object reclamation will occurs as long as a reference to this array is hold.
        Specified by:
        toArray in interface Collection<E>
        Specified by:
        toArray in interface Set<E>
        Overrides:
        toArray in class AbstractCollection<E>