- All Implemented Interfaces:
- Multiset<E>,- Iterable<E>,- Collection<E>
- Direct Known Subclasses:
- ForwardingSortedMultiset,- ForwardingSortedMultiset.StandardDescendingMultiset
Warning: The methods of ForwardingMultiset forward indiscriminately to
 the methods of the delegate. For example, overriding add(Object, int) alone will
 not change the behavior of ForwardingCollection.add(Object), which can lead to unexpected behavior. In
 this case, you should override add(Object) as well, either providing your own
 implementation, or delegating to the provided standardAdd method.
 
default method warning: This class does not forward calls to 
 default methods. Instead, it inherits their default implementations. When those implementations
 invoke methods, they invoke methods on the ForwardingMultiset.
 
The standard methods and any collection views they return are not guaranteed to be
 thread-safe, even when all of the methods that they depend on are thread-safe.
- Since:
- 2.0
- Author:
- Kevin Bourrillion, Louis Wasserman
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected classA sensible implementation ofMultiset.elementSet()in terms of the following methods:ForwardingCollection.clear(),ForwardingCollection.contains(java.lang.Object),ForwardingCollection.containsAll(java.util.Collection<?>),count(java.lang.Object),ForwardingCollection.isEmpty(), theSet.size()andSet.iterator()methods ofentrySet(), andremove(Object, int).Nested classes/interfaces inherited from interface com.google.common.collect.MultisetMultiset.Entry<E extends @Nullable Object>
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionintAdds a number of occurrences of an element to this multiset.intReturns the number of occurrences of an element in this multiset (the count of the element).delegate()Returns the backing delegate instance that methods are forwarded to.Returns the set of distinct elements contained in this multiset.entrySet()Returns a view of the contents of this multiset, grouped intoMultiset.Entryinstances, each providing an element of the multiset and the count of that element.booleanCompares the specified object with this multiset for equality.inthashCode()Returns the hash code for this multiset.intRemoves a number of occurrences of the specified element from this multiset.intAdds or removes the necessary occurrences of an element such that the element attains the desired count.booleanConditionally sets the count of an element to a new value, as described inMultiset.setCount(Object, int), provided that the element has the expected current count.protected booleanstandardAdd(E element) A sensible definition ofForwardingCollection.add(Object)in terms ofadd(Object, int).protected booleanstandardAddAll(Collection<? extends E> elementsToAdd) A sensible definition ofForwardingCollection.addAll(Collection)in terms ofForwardingCollection.add(Object)andadd(Object, int).protected voidA sensible definition ofForwardingCollection.clear()in terms of theiteratormethod ofentrySet().protected booleanstandardContains(@Nullable Object object) A sensible definition ofForwardingCollection.contains(java.lang.Object)in terms ofcount(java.lang.Object).protected intstandardCount(@Nullable Object object) A sensible, albeit inefficient, definition ofcount(java.lang.Object)in terms ofentrySet().protected booleanstandardEquals(@Nullable Object object) A sensible, albeit inefficient, definition ofequals(java.lang.Object)in terms ofentrySet().size()andcount(java.lang.Object).protected intA sensible definition ofhashCode()asentrySet().hashCode().A sensible definition ofForwardingCollection.iterator()in terms ofentrySet()andForwardingCollection.remove(Object).protected booleanstandardRemove(@Nullable Object element) A sensible definition ofForwardingCollection.remove(Object)in terms ofremove(Object, int).protected booleanstandardRemoveAll(Collection<?> elementsToRemove) A sensible definition ofForwardingCollection.removeAll(java.util.Collection<?>)in terms of theremoveAllmethod ofelementSet().protected booleanstandardRetainAll(Collection<?> elementsToRetain) A sensible definition ofForwardingCollection.retainAll(java.util.Collection<?>)in terms of theretainAllmethod ofelementSet().protected intstandardSetCount(E element, int count) A sensible definition ofsetCount(Object, int)in terms ofcount(Object),add(Object, int), andremove(Object, int).protected booleanstandardSetCount(E element, int oldCount, int newCount) A sensible definition ofsetCount(Object, int, int)in terms ofcount(Object)andsetCount(Object, int).protected intA sensible, albeit inefficient, definition ofForwardingCollection.size()in terms ofentrySet().protected StringA sensible definition ofForwardingObject.toString()asentrySet().toString().Methods inherited from class com.google.common.collect.ForwardingCollectionadd, addAll, clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, standardContainsAll, standardIsEmpty, standardToArray, standardToArray, toArray, toArrayMethods inherited from class com.google.common.collect.ForwardingObjecttoStringMethods inherited from class java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.CollectionaddAll, clear, isEmpty, parallelStream, removeIf, spliterator, stream, toArray, toArray, toArray
- 
Constructor Details- 
ForwardingMultisetprotected ForwardingMultiset()Constructor for use by subclasses.
 
- 
- 
Method Details- 
delegateDescription copied from class:ForwardingObjectReturns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such asForwardingSet.delegate(). Concrete subclasses override this method to supply the instance being decorated.- Specified by:
- delegatein class- ForwardingCollection<E extends @Nullable Object>
 
- 
countDescription copied from interface:MultisetReturns the number of occurrences of an element in this multiset (the count of the element). Note that for anObject.equals(java.lang.Object)-based multiset, this gives the same result asCollections.frequency(java.util.Collection<?>, java.lang.Object)(which would presumably perform more poorly).Note: the utility method Iterables.frequency(java.lang.Iterable<?>, java.lang.Object)generalizes this operation; it correctly delegates to this method when dealing with a multiset, but it can also accept any other iterable type.
- 
addDescription copied from interface:MultisetAdds a number of occurrences of an element to this multiset. Note that ifoccurrences == 1, this method has the identical effect toMultiset.add(Object). This method is functionally equivalent (except in the case of overflow) to the calladdAll(Collections.nCopies(element, occurrences)), which would presumably perform much more poorly.- Specified by:
- addin interface- Multiset<E extends @Nullable Object>
- Parameters:
- element- the element to add occurrences of; may be null only if explicitly allowed by the implementation
- occurrences- the number of occurrences of the element to add. May be zero, in which case no change will be made.
- Returns:
- the count of the element before the operation; possibly zero
 
- 
removeDescription copied from interface:MultisetRemoves 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 ifoccurrences == 1, this is functionally equivalent to the callremove(element).- Specified by:
- removein interface- Multiset<E extends @Nullable Object>
- Parameters:
- element- the element to conditionally remove occurrences of
- occurrences- the number of occurrences of the element to remove. May be zero, in which case no change will be made.
- Returns:
- the count of the element before the operation; possibly zero
 
- 
elementSetDescription copied from interface:MultisetReturns 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: elementSet().size().- Specified by:
- elementSetin interface- Multiset<E extends @Nullable Object>
- Returns:
- a view of the set of distinct elements in this multiset
 
- 
entrySetDescription copied from interface:MultisetReturns a view of the contents of this multiset, grouped intoMultiset.Entryinstances, each providing an element of the multiset and the count of that element. This set contains exactly one entry for each distinct element in the multiset (thus it always has the same size as theMultiset.elementSet()). The order of the elements in the element set is unspecified.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 Entryinstances already retrieved from the entry set (this is implementation-dependent). Furthermore, implementations are not required to support modifications to the entry set at all, and theEntryinstances themselves don't even have methods for modification. See the specific implementation class for more details on how its entry set handles modifications.
- 
equalsDescription copied from interface:MultisetCompares the specified object with this multiset for equality. Returnstrueif the given object is also a multiset and contains equal elements with equal counts, regardless of order.
- 
hashCodepublic int hashCode()Description copied from interface:MultisetReturns the hash code for this multiset. This is defined as the sum of((element == null) ? 0 : element.hashCode()) ^ count(element)over all distinct elements in the multiset. It follows that a multiset and its entry set always have the same hash code. 
- 
setCountDescription copied from interface:MultisetAdds or removes the necessary occurrences of an element such that the element attains the desired count.- Specified by:
- setCountin interface- Multiset<E extends @Nullable Object>
- Parameters:
- element- the element to add or remove occurrences of; may be null only if explicitly allowed by the implementation
- count- the desired count of the element in this multiset
- Returns:
- the count of the element before the operation; possibly zero
 
- 
setCountDescription copied from interface:MultisetConditionally sets the count of an element to a new value, as described inMultiset.setCount(Object, int), provided that the element has the expected current count. If the current count is notoldCount, no change is made.- Specified by:
- setCountin interface- Multiset<E extends @Nullable Object>
- Parameters:
- element- the element to conditionally set the count of; may be null only if explicitly allowed by the implementation
- oldCount- the expected present count of the element in this multiset
- newCount- the desired count of the element in this multiset
- Returns:
- trueif the condition for modification was met. This implies that the multiset was indeed modified, unless- oldCount == newCount.
 
- 
standardContainsA sensible definition ofForwardingCollection.contains(java.lang.Object)in terms ofcount(java.lang.Object). If you overridecount(java.lang.Object), you may wish to overrideForwardingCollection.contains(java.lang.Object)to forward to this implementation.- Overrides:
- standardContainsin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardClearprotected void standardClear()A sensible definition ofForwardingCollection.clear()in terms of theiteratormethod ofentrySet(). If you overrideentrySet(), you may wish to overrideForwardingCollection.clear()to forward to this implementation.- Overrides:
- standardClearin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardCountA sensible, albeit inefficient, definition ofcount(java.lang.Object)in terms ofentrySet(). If you overrideentrySet(), you may wish to overridecount(java.lang.Object)to forward to this implementation.- Since:
- 7.0
 
- 
standardAddA sensible definition ofForwardingCollection.add(Object)in terms ofadd(Object, int). If you overrideadd(Object, int), you may wish to overrideForwardingCollection.add(Object)to forward to this implementation.- Since:
- 7.0
 
- 
standardAddAllA sensible definition ofForwardingCollection.addAll(Collection)in terms ofForwardingCollection.add(Object)andadd(Object, int). If you override either of these methods, you may wish to overrideForwardingCollection.addAll(Collection)to forward to this implementation.- Overrides:
- standardAddAllin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardRemoveA sensible definition ofForwardingCollection.remove(Object)in terms ofremove(Object, int). If you overrideremove(Object, int), you may wish to overrideForwardingCollection.remove(Object)to forward to this implementation.- Overrides:
- standardRemovein class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardRemoveAllA sensible definition ofForwardingCollection.removeAll(java.util.Collection<?>)in terms of theremoveAllmethod ofelementSet(). If you overrideelementSet(), you may wish to overrideForwardingCollection.removeAll(java.util.Collection<?>)to forward to this implementation.- Overrides:
- standardRemoveAllin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardRetainAllA sensible definition ofForwardingCollection.retainAll(java.util.Collection<?>)in terms of theretainAllmethod ofelementSet(). If you overrideelementSet(), you may wish to overrideForwardingCollection.retainAll(java.util.Collection<?>)to forward to this implementation.- Overrides:
- standardRetainAllin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
- 
standardSetCountA sensible definition ofsetCount(Object, int)in terms ofcount(Object),add(Object, int), andremove(Object, int).entrySet(). If you override any of these methods, you may wish to overridesetCount(Object, int)to forward to this implementation.- Since:
- 7.0
 
- 
standardSetCountA sensible definition ofsetCount(Object, int, int)in terms ofcount(Object)andsetCount(Object, int). If you override either of these methods, you may wish to overridesetCount(Object, int, int)to forward to this implementation.- Since:
- 7.0
 
- 
standardIteratorA sensible definition ofForwardingCollection.iterator()in terms ofentrySet()andForwardingCollection.remove(Object). If you override either of these methods, you may wish to overrideForwardingCollection.iterator()to forward to this implementation.- Since:
- 7.0
 
- 
standardSizeprotected int standardSize()A sensible, albeit inefficient, definition ofForwardingCollection.size()in terms ofentrySet(). If you overrideentrySet(), you may wish to overrideForwardingCollection.size()to forward to this implementation.- Since:
- 7.0
 
- 
standardEqualsA sensible, albeit inefficient, definition ofequals(java.lang.Object)in terms ofentrySet().size()andcount(java.lang.Object). If you override either of these methods, you may wish to overrideequals(java.lang.Object)to forward to this implementation.- Since:
- 7.0
 
- 
standardHashCodeprotected int standardHashCode()A sensible definition ofhashCode()asentrySet().hashCode(). If you overrideentrySet(), you may wish to overridehashCode()to forward to this implementation.- Since:
- 7.0
 
- 
standardToStringA sensible definition ofForwardingObject.toString()asentrySet().toString(). If you overrideentrySet(), you may wish to overrideForwardingObject.toString()to forward to this implementation.- Overrides:
- standardToStringin class- ForwardingCollection<E extends @Nullable Object>
- Since:
- 7.0
 
 
-