Class CopyOnWriteMultiset<E>

  • Type Parameters:
    E - The type of element being stored.
    All Implemented Interfaces:
    Iterable<E>

    public final class CopyOnWriteMultiset<E>
    extends Object
    implements Iterable<E>
    An unordered collection of elements that allows duplicates, but also allows access to a set of unique elements.

    This class is thread-safe using the same method as CopyOnWriteArrayList. Mutation methods cause the underlying data to be copied. elementSet() and iterator() return snapshots that are unaffected by subsequent mutations.

    Iterating directly on this class reveals duplicate elements. Unique elements can be accessed via elementSet(). Iteration order for both of these is not defined.

    • Constructor Detail

      • CopyOnWriteMultiset

        public CopyOnWriteMultiset()
    • Method Detail

      • add

        public void add​(E element)
        Adds element to the multiset.
        Parameters:
        element - The element to be added.
      • remove

        public void remove​(E element)
        Removes element from the multiset.
        Parameters:
        element - The element to be removed.
      • elementSet

        public Set<E> elementSet()
        Returns a snapshot of the unique elements currently in this multiset.

        Changes to the underlying multiset are not reflected in the returned value.

        Returns:
        An unmodifiable set containing the unique elements in this multiset.
      • iterator

        public Iterator<E> iterator()
        Returns an iterator over a snapshot of all the elements currently in this multiset (including duplicates).

        Changes to the underlying multiset are not reflected in the returned value.

        Specified by:
        iterator in interface Iterable<E>
        Returns:
        An unmodifiable iterator over all the elements in this multiset (including duplicates).
      • count

        public int count​(E element)
        Returns the number of occurrences of an element in this multiset.