@GwtCompatible public final class Multisets extends Object
Multiset instances.
See the Guava User Guide article on Multisets.
| Modifier and Type | Method and Description |
|---|---|
static boolean |
containsOccurrences(Multiset
Returns
true if
subMultiset.count(o) <= superMultiset.count(o) for all
o.
|
static <E> ImmutableMultiset |
copyHighestCountFirst(Multiset
Returns a copy of
multiset as an
ImmutableMultiset whose iteration order is highest count first, with ties broken by the iteration order of the original multiset.
|
static <E> Multiset |
difference(Multiset
Returns an unmodifiable view of the difference of two multisets.
|
static <E> Multiset |
filter(Multiset
Returns a view of the elements of
unfiltered that satisfy a predicate.
|
static <E> Multiset |
immutableEntry(E e, int n)
Returns an immutable multiset entry with the specified element and count.
|
static <E> Multiset |
intersection(Multiset
Returns an unmodifiable view of the intersection of two multisets.
|
static boolean |
removeOccurrences(Multiset
For each occurrence of an element
e in
occurrencesToRemove, removes one occurrence of
e in
multisetToModify.
|
static boolean |
retainOccurrences(Multiset
Modifies
multisetToModify so that its count for an element
e is at most
multisetToRetain.count(e).
|
static <E> Multiset |
sum(Multiset
Returns an unmodifiable view of the sum of two multisets.
|
static <E> Multiset |
union(Multiset
Returns an unmodifiable view of the union of two multisets.
|
static <E> Multiset |
unmodifiableMultiset(ImmutableMultiset
Deprecated.
no need to use this
|
static <E> Multiset |
unmodifiableMultiset(Multiset
Returns an unmodifiable view of the specified multiset.
|
static <E> SortedMultiset |
unmodifiableSortedMultiset(SortedMultiset
Returns an unmodifiable view of the specified sorted multiset.
|
public static <E> Multiset<E> unmodifiableMultiset(Multiset <? extends E> multiset)
UnsupportedOperationException.
The returned multiset will be serializable if the specified multiset is serializable.
multiset - the multiset for which an unmodifiable view is to be generated
@Deprecated public static <E> Multiset<E> unmodifiableMultiset(ImmutableMultiset <E> multiset)
@Beta public static <E> SortedMultiset<E> unmodifiableSortedMultiset(SortedMultiset <E> sortedMultiset)
UnsupportedOperationException.
The returned multiset will be serializable if the specified multiset is serializable.
sortedMultiset - the sorted multiset for which an unmodifiable view is to be generated
public static <E> Multiset.Entry <E> immutableEntry(E e, int n)
e is.
e - the element to be associated with the returned entry
n - the count to be associated with the returned entry
IllegalArgumentException - if
n is negative
@Beta public static <E> Multiset<E> filter(Multiset <E> unfiltered, Predicate <? super E> predicate)
unfiltered that satisfy a predicate. The returned multiset is a live view of
unfiltered; changes to one affect the other.
The resulting multiset's iterators, and those of its entrySet() and elementSet(), do not support remove(). However, all other multiset methods supported by unfiltered are supported by the returned multiset. When given an element that doesn't satisfy the predicate, the multiset's add() and addAll() methods throw an IllegalArgumentException. When methods such as removeAll() and clear() are called on the filtered multiset, only elements that satisfy the filter will be removed from the underlying multiset.
The returned multiset isn't threadsafe or serializable, even if unfiltered is.
Many of the filtered multiset's methods, such as size(), iterate across every element in the underlying multiset and determine which elements satisfy the filter. When a live view is not needed, it may be faster to copy the returned multiset and use the copy.
Warning: predicate must be consistent with equals, as documented at Predicate. Do not provide a predicate such as Predicates.instanceOf(ArrayList.class), which is inconsistent with equals. (See Iterables for related functionality.)
@Beta public static <E> Multiset<E> union(Multiset <? extends E> multiset1, Multiset <? extends E> multiset2)
multiset1 followed by the members of the element set of
multiset2 that are not contained in
multiset1, with repeated occurrences of the same element appearing consecutively.
Results are undefined if multiset1 and multiset2 are based on different equivalence relations (as HashMultiset and TreeMultiset are).
public static <E> Multiset<E> intersection(Multiset <E> multiset1, Multiset <?> multiset2)
multiset1, with repeated occurrences of the same element appearing consecutively.
Results are undefined if multiset1 and multiset2 are based on different equivalence relations (as HashMultiset and TreeMultiset are).
@Beta public static <E> Multiset<E> sum(Multiset <? extends E> multiset1, Multiset <? extends E> multiset2)
multiset1 followed by the members of the element set of
multiset2 that are not contained in
multiset1, with repeated occurrences of the same element appearing consecutively.
Results are undefined if multiset1 and multiset2 are based on different equivalence relations (as HashMultiset and TreeMultiset are).
@Beta public static <E> Multiset<E> difference(Multiset <E> multiset1, Multiset <?> multiset2)
multiset1, with repeated occurrences of the same element appearing consecutively.
Results are undefined if multiset1 and multiset2 are based on different equivalence relations (as HashMultiset and TreeMultiset are).
public static boolean containsOccurrences(Multiset<?> superMultiset, Multiset <?> subMultiset)
true if
subMultiset.count(o) <= superMultiset.count(o) for all
o.
public static boolean retainOccurrences(Multiset<?> multisetToModify, Multiset <?> multisetToRetain)
multisetToModify so that its count for an element
e is at most
multisetToRetain.count(e).
To be precise, multisetToModify.count(e) is set to Math.min(multisetToModify.count(e), multisetToRetain.count(e)). This is similar to intersection (multisetToModify, multisetToRetain), but mutates multisetToModify instead of returning a view.
In contrast, multisetToModify.retainAll(multisetToRetain) keeps all occurrences of elements that appear at all in multisetToRetain, and deletes all occurrences of all other elements.
true if
multisetToModify was changed as a result of this operation
public static boolean removeOccurrences(Multiset<?> multisetToModify, Iterable <?> occurrencesToRemove)
e in
occurrencesToRemove, removes one occurrence of
e in
multisetToModify.
Equivalently, this method modifies multisetToModify so that multisetToModify.count(e) is set to Math.max(0, multisetToModify.count(e) - occurrencesToRemove.count(e)).
This is not the same as multisetToModify. removeAll(occurrencesToRemove), which removes all occurrences of elements that appear in occurrencesToRemove. However, this operation is equivalent to, albeit sometimes more efficient than, the following:
for (E e : occurrencesToRemove) { multisetToModify.remove(e); }
true if
multisetToModify was changed as a result of this operation
Multiset)
@Beta public static <E> ImmutableMultiset<E> copyHighestCountFirst(Multiset <E> multiset)
multiset as an
ImmutableMultiset whose iteration order is highest count first, with ties broken by the iteration order of the original multiset.