Package org.apache.commons.collections4.multiset

# Class HashMultiSet<E>

java.lang.Object
java.util.AbstractCollection<E>
org.apache.commons.collections4.multiset.AbstractMultiSet<E>
org.apache.commons.collections4.multiset.AbstractMapMultiSet<E>
org.apache.commons.collections4.multiset.HashMultiSet<E>

Type Parameters:
  `E` - The type held in the multiset

All Implemented Interfaces:
  `Serializable`, `Iterable<E>`, `Collection<E>`, `MultiSet<E>`

public class HashMultiSet<E> extends AbstractMapMultiSet<E> implements Serializable
Implements `MultiSet`, using a `HashMap` to provide the data storage. This is the standard implementation of a multiset.

A `MultiSet` stores each object in the collection together with a count of occurrences. Extra methods on the interface allow multiple copies of an object to be added or removed at once.

Note that HashMultiSet is not synchronized and is not thread-safe. If you wish to use this multiset from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this multiset using `MultiSetUtils.synchronizedMultiSet(MultiSet)`. Unsynchronized concurrent modification can corrupt the structure of the backing `HashMap`, which may cause subsequent operations to throw exceptions, return incorrect results, or loop indefinitely.

Since:
  4.1
See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.apache.commons.collections4.multiset.AbstractMapMultiSet

  `AbstractMapMultiSet.EntrySetIterator<E>, AbstractMapMultiSet.MultiSetEntry<E>, AbstractMapMultiSet.MutableInteger, AbstractMapMultiSet.UniqueSetIterator<E>`

  ## Nested classes/interfaces inherited from class org.apache.commons.collections4.multiset.AbstractMultiSet

  `AbstractMultiSet.AbstractEntry<E>, AbstractMultiSet.EntrySet<E>, AbstractMultiSet.UniqueSet<E>`

  ## Nested classes/interfaces inherited from interface org.apache.commons.collections4.MultiSet

  `MultiSet.Entry<E>`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `HashMultiSet()`
  Constructs an empty `HashMultiSet`.
  `HashMultiSet(Iterable<? extends E> iterable)`
  Constructs a multiset containing all the members of the given Iterable.
  `HashMultiSet(Collection<? extends E> coll)`
  Constructs a multiset containing all the members of the given collection.

- ## Method Summary

  ### Methods inherited from class org.apache.commons.collections4.multiset.AbstractMapMultiSet

  `add, clear, contains, createEntrySetIterator, createUniqueSetIterator, doReadObject, doWriteObject, equals, getCount, getMap, hashCode, isEmpty, iterator, remove, setMap, size, toArray, toArray, uniqueElements`

  ### Methods inherited from class org.apache.commons.collections4.multiset.AbstractMultiSet

  `add, createEntrySet, createUniqueSet, entrySet, remove, removeAll, setCount, toString, uniqueSet`

  ### Methods inherited from class java.util.AbstractCollection

  `addAll, containsAll, retainAll`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.util.Collection

  `addAll, parallelStream, removeIf, spliterator, stream`

  ### Methods inherited from interface java.lang.Iterable

  `forEach`

  ### Methods inherited from interface org.apache.commons.collections4.MultiSet

  `containsAll, retainAll`

- ## Constructor Details

  - ### HashMultiSet

    public HashMultiSet()
    Constructs an empty `HashMultiSet`.

  - ### HashMultiSet

    public HashMultiSet(Collection<? extends E> coll)
    Constructs a multiset containing all the members of the given collection.
    Parameters:
      `coll` - A collection to copy into this multiset

  - ### HashMultiSet

    public HashMultiSet(Iterable<? extends E> iterable)
    Constructs a multiset containing all the members of the given Iterable.
    Parameters:
      `iterable` - An iterable to copy into this multiset.
    Since:
      4.6.0