Set, but may have duplicate
elements. A multiset is also sometimes called a bag.
Elements of a multiset that are equal to one another are referred to as occurrences of
the same single element. The total number of occurrences of an element in a multiset is called
the count of that element (the terms "frequency" and "multiplicity" are equivalent, but
not used in this API). Since the count of an element is represented as an int, a multiset
may never contain more than Integer#MAX_VALUE occurrences of any one element.
Multiset refines the specifications of several methods from Collection. It
also defines an additional query operation, count, which returns the count of an
element. There are five new bulk-modification operations, for example add(Object, int),
to add or remove multiple occurrences of an element at once, or to set the count of an element to
a specific value. These modification operations are optional, but implementations which support
the standard collection operations add(Object) or remove(Object) are encouraged
to implement the related methods as well. Finally, two collection views are provided: elementSet contains the distinct elements of the multiset "with duplicates collapsed", and
entrySet is similar but contains Multiset. instances, each providing
both a distinct element and the count of that element.
In addition to these required methods, implementations of Multiset are expected to
provide two static creation methods: create(), returning an empty multiset, and
create(Iterable<? extends E>), returning a multiset containing the given initial
elements. This is simply a refinement of Collection's constructor recommendations,
reflecting the new developments of Java 5.
As with other collection types, the modification operations are optional, and should throw
UnsupportedOperationException when they are not implemented. Most implementations should
support either all add operations or none of them, all removal operations or none of them, and if
and only if all of these are supported, the setCount methods as well.
A multiset uses Object#equals to determine whether two instances should be considered
"the same," unless specified otherwise by the implementation.
Warning
as with normal Sets, it is almost always a bad idea to modify an
element (in a way that affects its Object#equals behavior) while it is contained in a
multiset. Undefined behavior and bugs will result.
ImmutableMultiset
ImmutableSortedMultiset
HashMultiset
LinkedHashMultiset
TreeMultiset
EnumMultiset
ConcurrentHashMultiset
If your values may be zero, negative, or outside the range of an int, you may wish to use
com. instead. Note, however, that unlike
Multiset, AtomicLongMap does not automatically remove zeros.
See the Guava User Guide article on Multiset.
| Modifier and Type | Class and Description |
|---|---|
| public static interface |
| Modifier and Type | Method and Description |
|---|---|
| public int | Returns: the count of the element before the operation; possibly zerothe element to add occurrences of; may be null only if explicitly allowed by the
implementation element, int the number of occurrences of the element to add. May be zero, in which case
no change will be made. occurrences)Adds a number of occurrences of an element to this multiset. |
| public boolean | Returns: true always, since this call is required to modify the multiset, unlike other
Collection typesthe element to add one occurrence of; may be null only if explicitly allowed by
the implementation element)Redeclares java. |
| public boolean | Returns: true if this multiset contains at least one occurrence of the elementthe element to check for element)Redeclares java. |
| public boolean | Returns: true if this multiset contains at least one occurrence of each element
contained in elementsthe collection of elements to be checked for containment in this multiset elements)Redeclares java. true if this multiset contains at least one occurrence of each element in the
specified collection.
|
| public int | |
| public Set | Returns: a view of the set of distinct elements in this multisetReturns the set of distinct elements contained in this multiset. |
| public Set | Returns: a set of entries representing the data of this multisetReturns a view of the contents of this multiset, grouped into |
| public boolean | equals(Object
object to be compared for equality with this collection object)Redeclares java. |
| public default void | forEach(Consumer<? super E>
The action to be performed for each element action)Overrides default java. Iterable
until all elements have been processed or the action throws an
exception.
|
| public default void | forEachEntry(ObjIntConsumer<? super E> action)
Runs the specified action for each distinct element in this multiset, and the number of occurrences of that element. |
| public int | |
| public Iterator | iterator()
Redeclares java. |
| public int | Returns: the count of the element before the operation; possibly zerothe element to conditionally remove occurrences of element, int the number of occurrences of the element to remove. May be zero, in which
case no change will be made. occurrences)Removes a number of occurrences of the specified element from this multiset. |
| public boolean | Returns: true if an occurrence was found and removedthe element to remove one occurrence of element)Redeclares java. |
| public boolean | removeAll(Collection<?>
collection containing elements to be removed from this collection c)Redeclares java. |
| public boolean | retainAll(Collection<?>
collection containing elements to be retained in this collection c)Redeclares java. |
| public int | Returns: the count of the element before the operation; possibly zerothe element to add or remove occurrences of; may be null only if explicitly
allowed by the implementation element, int the desired count of the element in this multiset count)Adds or removes the necessary occurrences of an element such that the element attains the desired count. |
| public boolean | Returns: true if the condition for modification was met. This implies that the multiset
was indeed modified, unless oldCount == newCount.the element to conditionally set the count of; may be null only if explicitly
allowed by the implementation element, int the expected present count of the element in this multiset oldCount, int the desired count of the element in this multiset newCount)Conditionally sets the count of an element to a new value, as described in |
| public int | size()
Redeclares java. |
| public default Spliterator | spliterator()
Overrides default java. Spliterator over the elements in this collection.
|
| public String |
| add | back to summary |
|---|---|
| public int add(E element, int occurrences) Adds a number of occurrences of an element to this multiset. Note that if
| |
| add | back to summary |
|---|---|
| public boolean add(E element) Redeclares java. Adds a single occurrence of the specified element to this multiset. This method refines To both add the element and obtain the previous count of that element, use
| |
| contains | back to summary |
|---|---|
| public boolean contains(Object element) Redeclares java. Determines whether this multiset contains the specified element. This method refines | |
| containsAll | back to summary |
|---|---|
| public boolean containsAll(Collection<?> elements) Redeclares java. Returns This method refines Note this method does not take into account the occurrence count of an element in
the two collections; it may still return
| |
| count | back to summary |
|---|---|
| public int count(Object element) Returns the number of occurrences of an element in this multiset (the count of the
element). Note that for an Note the utility method
| |
| elementSet | back to summary |
|---|---|
| public Set Returns the set of distinct elements contained in this multiset. The element set is backed by the same data as the multiset, so any change to either is immediately reflected in the other. The order of the elements in the element set is unspecified. If the element set supports any removal operations, these necessarily cause all occurrences of the removed element(s) to be removed from the multiset. Implementations are not expected to support the add operations, although this is possible. A common use for the element set is to find the number of distinct elements in the multiset:
| |
| entrySet | back to summary |
|---|---|
| public Set Returns a view of the contents of this multiset, grouped into The entry set is backed by the same data as the multiset, so any change to either is
immediately reflected in the other. However, multiset changes may or may not be reflected in
any | |
| equals | back to summary |
|---|---|
| public boolean equals(Object object) Redeclares java. Compares the specified object with this multiset for equality. Returns
| |
| forEach | back to summary |
|---|---|
| public default void forEach(Consumer<? super E> action) Overrides default java. Doc from java. Performs the given action for each element of the The behavior of this method is unspecified if the action performs side-effects that modify the underlying source of elements, unless an overriding class has specified a concurrent modification policy. Elements that occur multiple times in the multiset will be passed to the | |
| forEachEntry | back to summary |
|---|---|
| public default void forEachEntry(ObjIntConsumer<? super E> action) Runs the specified action for each distinct element in this multiset, and the number of
occurrences of that element. For some
| |
| hashCode | back to summary |
|---|---|
| public int hashCode() Redeclares java. Returns the hash code for this multiset. This is defined as the sum of
over all distinct elements in the multiset. It follows that a multiset and its entry set always have the same hash code.
| |
| iterator | back to summary |
|---|---|
| public Iterator Redeclares java. Doc from java. Returns an iterator over the elements in this collection. There are no guarantees concerning the order in which the elements are returned (unless this collection is an instance of some class that provides a guarantee). Elements that occur multiple times in the multiset will appear multiple times in this iterator, though not necessarily sequentially. | |
| remove | back to summary |
|---|---|
| public int remove(Object element, int occurrences) Removes a number of occurrences of the specified element from this multiset. If the multiset
contains fewer than this number of occurrences to begin with, all occurrences will be removed.
Note that if
| |
| remove | back to summary |
|---|---|
| public boolean remove(Object element) Redeclares java. Removes a single occurrence of the specified element from this multiset, if present. This method refines To both remove the element and obtain the previous count of that element, use
| |
| removeAll | back to summary |
|---|---|
| public boolean removeAll(Collection<?> c) Redeclares java. Doc from java. Removes all of this collection's elements that are also contained in the specified collection (optional operation). After this call returns, this collection will contain no elements in common with the specified collection. Note This method ignores how often any element might appear in This method refines
| |
| retainAll | back to summary |
|---|---|
| public boolean retainAll(Collection<?> c) Redeclares java. Doc from java. Retains only the elements in this collection that are contained in the specified collection (optional operation). In other words, removes from this collection all of its elements that are not contained in the specified collection. Note This method ignores how often any element might appear in This method refines
| |
| setCount | back to summary |
|---|---|
| public int setCount(E element, int count) Adds or removes the necessary occurrences of an element such that the element attains the desired count.
| |
| setCount | back to summary |
|---|---|
| public boolean setCount(E element, int oldCount, int newCount) Conditionally sets the count of an element to a new value, as described in
| |
| size | back to summary |
|---|---|
| public int size() Redeclares java. Returns the total number of all occurrences of all elements in this multiset. Note this method does not return the number of distinct elements in the
multiset, which is given by
| |
| spliterator | back to summary |
|---|---|
| public default Spliterator Overrides default java. Doc from java. Creates a The default implementation should be overridden by subclasses that
can return a more efficient spliterator. In order to
preserve expected laziness behavior for the
These requirements ensure that streams produced by the
| |
| toString | back to summary |
|---|---|
| public String toString()
It is recommended, though not mandatory, that this method return the result of invoking
| |
Multiset#entrySet method returns
a view of the multiset whose elements are of this class. A multiset implementation may return
Entry instances that are either live "read-through" views to the Multiset, or immutable
snapshots. Note that this type is unrelated to the similarly-named type Map.Entry.
| Modifier and Type | Method and Description |
|---|---|
| public boolean | |
| public int | Returns: the count of the element; never negativeReturns the count of the associated element in the underlying multiset. |
| public E | Returns: the element corresponding to this entryReturns the multiset element corresponding to this entry. |
| public int | hashCode()
The hash code of a multiset entry for element
|
| public String |
| equals | back to summary |
|---|---|
| public boolean equals(Object o)
Returns
| |
| getCount | back to summary |
|---|---|
| public int getCount() Returns the count of the associated element in the underlying multiset. This count may either be an unchanging snapshot of the count at the time the entry was retrieved, or a live view of the current count of the element in the multiset, depending on the implementation. Note that in the former case, this method can never return zero, while in the latter, it will return zero if all occurrences of the element were since removed from the multiset.
| |
| getElement | back to summary |
|---|---|
| public E getElement() Returns the multiset element corresponding to this entry. Multiple calls to this method always return the same instance.
| |
| hashCode | back to summary |
|---|---|
| public int hashCode()
The hash code of a multiset entry for element
| |
| toString | back to summary |
|---|---|
| public String toString() Returns the canonical string representation of this entry, defined as follows. If the count
for this entry is one, this is simply the string representation of the corresponding element.
Otherwise, it is the string representation of the element, followed by the three characters
| |