Class WeakSet

  • All Implemented Interfaces:
    java.lang.Iterable, java.util.Collection, java.util.Set

    public class WeakSet
    extends java.util.AbstractSet
    implements java.util.Set
    A Set implementation with weak elements. An entry in a WeakSet will automatically be removed when the element is no longer in ordinary use. More precisely, the presence of an given element will not prevent the element from being discarded by the garbage collector, that is, made finalizable, finalized, and then reclaimed.
    Version:
    $Revision$
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.ref.ReferenceQueue queue
      The reference queue used to get object removal notifications.
      protected java.util.Set set
      The Set which will be used for element storage.
    • Constructor Summary

      Constructors 
      Constructor Description
      WeakSet()
      Construct a WeakSet based on a HashSet.
      WeakSet​(java.util.Set set)
      Construct a WeakSet.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(java.lang.Object obj)
      Add an element to the set.
      void clear()
      Removes all of the elements from this set.
      java.lang.Object clone()
      Returns a shallow copy of this WeakSet instance: the elements themselves are not cloned.
      boolean contains​(java.lang.Object obj)
      Returns true if this set contains the specified element.
      boolean isEmpty()
      Returns true if this set contains no elements.
      java.util.Iterator iterator()
      Return an iteration over the elements in the set.
      protected void maintain()
      Maintain the elements in the set.
      boolean remove​(java.lang.Object obj)
      Removes the given element from this set if it is present.
      int size()
      Return the size of the set.
      • 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
    • Field Detail

      • queue

        protected final java.lang.ref.ReferenceQueue queue
        The reference queue used to get object removal notifications.
      • set

        protected final java.util.Set set
        The Set which will be used for element storage.
    • Constructor Detail

      • WeakSet

        public WeakSet​(java.util.Set set)
        Construct a WeakSet. Any elements in the given set will be wrapped in WeakObject references.
        Parameters:
        set - The Set which will be used for element storage.
        Throws:
        NullArgumentException - Set is null.
      • WeakSet

        public WeakSet()
        Construct a WeakSet based on a HashSet.
    • Method Detail

      • maintain

        protected final void maintain()
        Maintain the elements in the set. Removes objects from the set that have been reclaimed due to GC.
      • size

        public int size()
        Return the size of the set.
        Specified by:
        size in interface java.util.Collection
        Specified by:
        size in interface java.util.Set
        Specified by:
        size in class java.util.AbstractCollection
        Returns:
        The size of the set.
      • iterator

        public java.util.Iterator iterator()
        Return an iteration over the elements in the set.
        Specified by:
        iterator in interface java.util.Collection
        Specified by:
        iterator in interface java.lang.Iterable
        Specified by:
        iterator in interface java.util.Set
        Specified by:
        iterator in class java.util.AbstractCollection
        Returns:
        An iteration over the elements in the set.
      • add

        public boolean add​(java.lang.Object obj)
        Add an element to the set.
        Specified by:
        add in interface java.util.Collection
        Specified by:
        add in interface java.util.Set
        Overrides:
        add in class java.util.AbstractCollection
        Parameters:
        obj - Element to add to the set.
        Returns:
        True if the element was added.
      • isEmpty

        public boolean isEmpty()
        Returns true if this set contains no elements.
        Specified by:
        isEmpty in interface java.util.Collection
        Specified by:
        isEmpty in interface java.util.Set
        Overrides:
        isEmpty in class java.util.AbstractCollection
        Returns:
        true if this set contains no elements.
      • contains

        public boolean contains​(java.lang.Object obj)
        Returns true if this set contains the specified element.
        Specified by:
        contains in interface java.util.Collection
        Specified by:
        contains in interface java.util.Set
        Overrides:
        contains in class java.util.AbstractCollection
        Parameters:
        obj - Element whose presence in this set is to be tested.
        Returns:
        true if this set contains the specified element.
      • remove

        public boolean remove​(java.lang.Object obj)
        Removes the given element from this set if it is present.
        Specified by:
        remove in interface java.util.Collection
        Specified by:
        remove in interface java.util.Set
        Overrides:
        remove in class java.util.AbstractCollection
        Parameters:
        obj - 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
        Specified by:
        clear in interface java.util.Set
        Overrides:
        clear in class java.util.AbstractCollection
      • clone

        public java.lang.Object clone()
        Returns a shallow copy of this WeakSet instance: the elements themselves are not cloned.
        Overrides:
        clone in class java.lang.Object
        Returns:
        A shallow copy of this set.