com.google.common.collect
Class Multisets

java.lang.Object
  extended by com.google.common.collect.Multisets

@GwtCompatible
public final class Multisets
extends Object

Provides static utility methods for creating and working with Multiset instances.

See the Guava User Guide article on Multisets.

Since:
2.0 (imported from Google Collections Library)
Author:
Kevin Bourrillion, Mike Bostock, Louis Wasserman

Method Summary
static boolean containsOccurrences(Multiset<?> superMultiset, Multiset<?> subMultiset)
          Returns true if subMultiset.count(o) <= superMultiset.count(o) for all o.
static
<E> ImmutableMultiset<E>
copyHighestCountFirst(Multiset<E> 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.Entry<E>
immutableEntry(E e, int n)
          Returns an immutable multiset entry with the specified element and count.
static
<E> Multiset<E>
intersection(Multiset<E> multiset1, Multiset<?> multiset2)
          Returns an unmodifiable view of the intersection of two multisets.
static boolean removeOccurrences(Multiset<?> multisetToModify, Multiset<?> occurrencesToRemove)
          For each occurrence of an element e in occurrencesToRemove, removes one occurrence of e in multisetToModify.
static boolean retainOccurrences(Multiset<?> multisetToModify, Multiset<?> multisetToRetain)
          Modifies multisetToModify so that its count for an element e is at most multisetToRetain.count(e).
static
<E> Multiset<E>
unmodifiableMultiset(ImmutableMultiset<E> multiset)
          Deprecated. no need to use this
static
<E> Multiset<E>
unmodifiableMultiset(Multiset<? extends E> multiset)
          Returns an unmodifiable view of the specified multiset.
static
<E> SortedMultiset<E>
unmodifiableSortedMultiset(SortedMultiset<E> sortedMultiset)
          Returns an unmodifiable view of the specified sorted multiset.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

unmodifiableMultiset

public static <E> Multiset<E> unmodifiableMultiset(Multiset<? extends E> multiset)
Returns an unmodifiable view of the specified multiset. Query operations on the returned multiset "read through" to the specified multiset, and attempts to modify the returned multiset result in an UnsupportedOperationException.

The returned multiset will be serializable if the specified multiset is serializable.

Parameters:
multiset - the multiset for which an unmodifiable view is to be generated
Returns:
an unmodifiable view of the multiset

unmodifiableMultiset

@Deprecated
public static <E> Multiset<E> unmodifiableMultiset(ImmutableMultiset<E> multiset)
Deprecated. no need to use this

Simply returns its argument.

Since:
10.0

unmodifiableSortedMultiset

@Beta
public static <E> SortedMultiset<E> unmodifiableSortedMultiset(SortedMultiset<E> sortedMultiset)
Returns an unmodifiable view of the specified sorted multiset. Query operations on the returned multiset "read through" to the specified multiset, and attempts to modify the returned multiset result in an UnsupportedOperationException.

The returned multiset will be serializable if the specified multiset is serializable.

Parameters:
sortedMultiset - the sorted multiset for which an unmodifiable view is to be generated
Returns:
an unmodifiable view of the multiset
Since:
11.0

immutableEntry

public static <E> Multiset.Entry<E> immutableEntry(@Nullable
                                                   E e,
                                                   int n)
Returns an immutable multiset entry with the specified element and count. The entry will be serializable if e is.

Parameters:
e - the element to be associated with the returned entry
n - the count to be associated with the returned entry
Throws:
IllegalArgumentException - if n is negative

intersection

public static <E> Multiset<E> intersection(Multiset<E> multiset1,
                                           Multiset<?> multiset2)
Returns an unmodifiable view of the intersection of two multisets. An element's count in the multiset is the smaller of its counts in the two backing multisets. The iteration order of the returned multiset matches the element set of 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).

Since:
2.0

containsOccurrences

public static boolean containsOccurrences(Multiset<?> superMultiset,
                                          Multiset<?> subMultiset)
Returns true if subMultiset.count(o) <= superMultiset.count(o) for all o.

Since:
10.0

retainOccurrences

public static boolean retainOccurrences(Multiset<?> multisetToModify,
                                        Multiset<?> multisetToRetain)
Modifies 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.

Returns:
true if multisetToModify was changed as a result of this operation
Since:
10.0

removeOccurrences

public static boolean removeOccurrences(Multiset<?> multisetToModify,
                                        Multiset<?> occurrencesToRemove)
For each occurrence of an element 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 more efficient than, the following:

   for (E e : occurrencesToRemove) {
     multisetToModify.remove(e);
   }

Returns:
true if multisetToModify was changed as a result of this operation
Since:
10.0

copyHighestCountFirst

@Beta
public static <E> ImmutableMultiset<E> copyHighestCountFirst(Multiset<E> 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.

Since:
11.0


Copyright © 2010-2012. All Rights Reserved.