Top Description Constructors Methods
com.google.common.collect

public abstract Class ForwardingMultimap<K extends @Nullable Object, V extends @Nullable Object>

extends ForwardingObject
implements Multimap<K extends @Nullable Object, V extends @Nullable Object>
Class Inheritance
All Implemented Interfaces
com.google.common.collect.Multimap
Known Direct Subclasses
com.google.common.collect.ForwardingSetMultimap, com.google.common.collect.Multimaps.UnmodifiableMultimap, com.google.common.collect.ForwardingListMultimap
Annotations
@GwtCompatible
@ElementTypesAreNonnullByDefault
Imports
com.google.common.annotations.GwtCompatible, com.google.errorprone.annotations.CanIgnoreReturnValue, java.util.Collection, .Map, .Map.Entry, .Set, javax.annotation.CheckForNull, org.checkerframework.checker.nullness.qual.Nullable

A multimap which forwards all its method calls to another multimap. Subclasses should override one or more methods to modify the behavior of the backing multimap as desired per the decorator pattern.

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 ForwardingMultimap.

Author
Robert Konigsberg
Since
2.0

Constructor Summary

AccessConstructor and Description
protected
ForwardingMultimap()

Constructor for use by subclasses.

Method Summary

Modifier and TypeMethod and Description
public Map<K, Collection<V>>
asMap()

Implements com.google.common.collect.Multimap.asMap.

Returns a view of this multimap as a Map from each distinct key to the nonempty collection of that key's associated values.
public void
clear()

Implements com.google.common.collect.Multimap.clear.

Removes all key-value pairs from the multimap, leaving it empty.
public boolean
containsEntry(Object key, Object value)

Implements com.google.common.collect.Multimap.containsEntry.

Returns true if this multimap contains at least one key-value pair with the key key and the value value.
public boolean
containsKey(Object key)

Implements com.google.common.collect.Multimap.containsKey.

Returns true if this multimap contains at least one key-value pair with the key key.
public boolean
containsValue(Object value)

Implements com.google.common.collect.Multimap.containsValue.

Returns true if this multimap contains at least one key-value pair with the value value.
protected abstract Multimap<K, V>
delegate()

Implements abstract com.google.common.collect.ForwardingObject.delegate.

Returns the backing delegate instance that methods are forwarded to.
public Collection<Map.Entry<K, V>>
entries()

Implements com.google.common.collect.Multimap.entries.

Returns a view collection of all key-value pairs contained in this multimap, as Entry instances.
public boolean
equals(Object
the reference object with which to compare.
object
)

Overrides java.lang.Object.equals.

Implements com.google.common.collect.Multimap.equals.

Compares the specified object with this multimap for equality.
public Collection<V>
get(K key)

Implements com.google.common.collect.Multimap.get.

Returns a view collection of the values associated with key in this multimap, if any.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Implements com.google.common.collect.Multimap.hashCode.

Returns the hash code for this multimap.
public boolean
isEmpty()

Implements com.google.common.collect.Multimap.isEmpty.

Returns true if this multimap contains no key-value pairs.
public Multiset<K>
keys()

Implements com.google.common.collect.Multimap.keys.

Returns a view collection containing the key from each key-value pair in this multimap, without collapsing duplicates.
public Set<K>
keySet()

Implements com.google.common.collect.Multimap.keySet.

Returns a view collection of all distinct keys contained in this multimap.
public boolean
put(K key, V value)

Implements com.google.common.collect.Multimap.put.

Stores a key-value pair in this multimap.
public boolean
putAll(K key, Iterable<? extends V> values)

Implements com.google.common.collect.Multimap.putAll.

Stores a key-value pair in this multimap for each of values, all using the same key, key.
public boolean
putAll(Multimap<? extends K, ? extends V> multimap)

Implements com.google.common.collect.Multimap.putAll.

Stores all key-value pairs of multimap in this multimap, in the order returned by multimap.entries().
public boolean
remove(Object key, Object value)

Implements com.google.common.collect.Multimap.remove.

Removes a single key-value pair with the key key and the value value from this multimap, if such exists.
public Collection<V>
removeAll(Object key)

Implements com.google.common.collect.Multimap.removeAll.

Removes all values associated with the key key.
public Collection<V>
replaceValues(K key, Iterable<? extends V> values)

Implements com.google.common.collect.Multimap.replaceValues.

Stores a collection of values with the same key, replacing any existing values for that key.
public int
size()

Implements com.google.common.collect.Multimap.size.

Returns the number of key-value pairs in this multimap.
public Collection<V>
values()

Implements com.google.common.collect.Multimap.values.

Returns a view collection containing the value from each key-value pair contained in this multimap, without collapsing duplicates (so values().size() == size()).
Inherited from com.google.common.collect.ForwardingObject:
toString

Constructor Detail

ForwardingMultimapback to summary
protected ForwardingMultimap()

Constructor for use by subclasses.

Method Detail

asMapback to summary
public Map<K, Collection<V>> asMap()

Implements com.google.common.collect.Multimap.asMap.

Doc from com.google.common.collect.Multimap.asMap.

Returns a view of this multimap as a Map from each distinct key to the nonempty collection of that key's associated values. Note that this.asMap().get(k) is equivalent to this.get(k) only when k is a key contained in the multimap; otherwise it returns null as opposed to an empty collection.

Changes to the returned map or the collections that serve as its values will update the underlying multimap, and vice versa. The map does not support put or putAll, nor do its entries support setValue.

Annotations
@Override
clearback to summary
public void clear()

Implements com.google.common.collect.Multimap.clear.

Doc from com.google.common.collect.Multimap.clear.

Removes all key-value pairs from the multimap, leaving it empty.

Annotations
@Override
containsEntryback to summary
public boolean containsEntry(Object key, Object value)

Implements com.google.common.collect.Multimap.containsEntry.

Doc from com.google.common.collect.Multimap.containsEntry.

Returns true if this multimap contains at least one key-value pair with the key key and the value value.

Annotations
@Override
containsKeyback to summary
public boolean containsKey(Object key)

Implements com.google.common.collect.Multimap.containsKey.

Doc from com.google.common.collect.Multimap.containsKey.

Returns true if this multimap contains at least one key-value pair with the key key.

Annotations
@Override
containsValueback to summary
public boolean containsValue(Object value)

Implements com.google.common.collect.Multimap.containsValue.

Doc from com.google.common.collect.Multimap.containsValue.

Returns true if this multimap contains at least one key-value pair with the value value.

Annotations
@Override
delegateback to summary
protected abstract Multimap<K, V> delegate()

Implements abstract com.google.common.collect.ForwardingObject.delegate.

Doc from com.google.common.collect.ForwardingObject.delegate.

Returns 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 as ForwardingSet#delegate. Concrete subclasses override this method to supply the instance being decorated.

Annotations
@Override
entriesback to summary
public Collection<Map.Entry<K, V>> entries()

Implements com.google.common.collect.Multimap.entries.

Doc from com.google.common.collect.Multimap.entries.

Returns a view collection of all key-value pairs contained in this multimap, as Entry instances.

Changes to the returned collection or the entries it contains will update the underlying multimap, and vice versa. However, adding to the returned collection is not possible.

Annotations
@Override
equalsback to summary
public boolean equals(Object object)

Overrides java.lang.Object.equals.

Implements com.google.common.collect.Multimap.equals.

Doc from com.google.common.collect.Multimap.equals.

Compares the specified object with this multimap for equality. Two multimaps are equal when their map views, as returned by asMap, are also equal.

In general, two multimaps with identical key-value mappings may or may not be equal, depending on the implementation. For example, two SetMultimap instances with the same key-value mappings are equal, but equality of two ListMultimap instances depends on the ordering of the values for each key.

A non-empty SetMultimap cannot be equal to a non-empty ListMultimap, since their asMap views contain unequal collections as values. However, any two empty multimaps are equal, because they both have empty asMap views.

Parameters
object:Object

Doc from java.lang.Object.equals.

the reference object with which to compare.

Returns:boolean

Doc from java.lang.Object.equals.

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getback to summary
public Collection<V> get(K key)

Implements com.google.common.collect.Multimap.get.

Doc from com.google.common.collect.Multimap.get.

Returns a view collection of the values associated with key in this multimap, if any. Note that when containsKey(key) is false, this returns an empty collection, not null.

Changes to the returned collection will update the underlying multimap, and vice versa.

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Implements com.google.common.collect.Multimap.hashCode.

Doc from com.google.common.collect.Multimap.hashCode.

Returns the hash code for this multimap.

The hash code of a multimap is defined as the hash code of the map view, as returned by Multimap#asMap.

In general, two multimaps with identical key-value mappings may or may not have the same hash codes, depending on the implementation. For example, two SetMultimap instances with the same key-value mappings will have the same hashCode, but the hashCode of ListMultimap instances depends on the ordering of the values for each key.

Returns:int

Doc from java.lang.Object.hashCode.

a hash code value for this object.

Annotations
@Override
isEmptyback to summary
public boolean isEmpty()

Implements com.google.common.collect.Multimap.isEmpty.

Doc from com.google.common.collect.Multimap.isEmpty.

Returns true if this multimap contains no key-value pairs. Equivalent to size() == 0, but can in some cases be more efficient.

Annotations
@Override
keysback to summary
public Multiset<K> keys()

Implements com.google.common.collect.Multimap.keys.

Doc from com.google.common.collect.Multimap.keys.

Returns a view collection containing the key from each key-value pair in this multimap, without collapsing duplicates. This collection has the same size as this multimap, and keys().count(k) == get(k).size() for all k.

Changes to the returned multiset will update the underlying multimap, and vice versa. However, adding to the returned collection is not possible.

Annotations
@Override
keySetback to summary
public Set<K> keySet()

Implements com.google.common.collect.Multimap.keySet.

Doc from com.google.common.collect.Multimap.keySet.

Returns a view collection of all distinct keys contained in this multimap. Note that the key set contains a key if and only if this multimap maps that key to at least one value.

Changes to the returned set will update the underlying multimap, and vice versa. However, adding to the returned set is not possible.

Annotations
@Override
putback to summary
public boolean put(K key, V value)

Implements com.google.common.collect.Multimap.put.

Doc from com.google.common.collect.Multimap.put.

Stores a key-value pair in this multimap.

Some multimap implementations allow duplicate key-value pairs, in which case put always adds a new key-value pair and increases the multimap size by 1. Other implementations prohibit duplicates, and storing a key-value pair that's already in the multimap has no effect.

Returns:boolean

true if the method increased the size of the multimap, or false if the multimap already contained the key-value pair and doesn't allow duplicates

Annotations
@CanIgnoreReturnValue
@Override
putAllback to summary
public boolean putAll(K key, Iterable<? extends V> values)

Implements com.google.common.collect.Multimap.putAll.

Doc from com.google.common.collect.Multimap.putAll.

Stores a key-value pair in this multimap for each of values, all using the same key, key. Equivalent to (but expected to be more efficient than):

for (V value : values) {
  put(key, value);
}

In particular, this is a no-op if values is empty.

Returns:boolean

true if the multimap changed

Annotations
@CanIgnoreReturnValue
@Override
putAllback to summary
public boolean putAll(Multimap<? extends K, ? extends V> multimap)

Implements com.google.common.collect.Multimap.putAll.

Doc from com.google.common.collect.Multimap.putAll.

Stores all key-value pairs of multimap in this multimap, in the order returned by multimap.entries().

Returns:boolean

true if the multimap changed

Annotations
@CanIgnoreReturnValue
@Override
removeback to summary
public boolean remove(Object key, Object value)

Implements com.google.common.collect.Multimap.remove.

Doc from com.google.common.collect.Multimap.remove.

Removes a single key-value pair with the key key and the value value from this multimap, if such exists. If multiple key-value pairs in the multimap fit this description, which one is removed is unspecified.

Returns:boolean

true if the multimap changed

Annotations
@CanIgnoreReturnValue
@Override
removeAllback to summary
public Collection<V> removeAll(Object key)

Implements com.google.common.collect.Multimap.removeAll.

Doc from com.google.common.collect.Multimap.removeAll.

Removes all values associated with the key key.

Once this method returns, key will not be mapped to any values, so it will not appear in keySet(), asMap(), or any other views.

Returns:Collection<V>

the values that were removed (possibly empty). The returned collection may be modifiable, but updating it will have no effect on the multimap.

Annotations
@CanIgnoreReturnValue
@Override
replaceValuesback to summary
public Collection<V> replaceValues(K key, Iterable<? extends V> values)

Implements com.google.common.collect.Multimap.replaceValues.

Doc from com.google.common.collect.Multimap.replaceValues.

Stores a collection of values with the same key, replacing any existing values for that key.

If values is empty, this is equivalent to removeAll(key).

Returns:Collection<V>

the collection of replaced values, or an empty collection if no values were previously associated with the key. The collection may be modifiable, but updating it will have no effect on the multimap.

Annotations
@CanIgnoreReturnValue
@Override
sizeback to summary
public int size()

Implements com.google.common.collect.Multimap.size.

Doc from com.google.common.collect.Multimap.size.

Returns the number of key-value pairs in this multimap.

Note

this method does not return the number of distinct keys in the multimap, which is given by keySet().size() or asMap().size(). See the opening section of the Multimap class documentation for clarification.

Annotations
@Override
valuesback to summary
public Collection<V> values()

Implements com.google.common.collect.Multimap.values.

Doc from com.google.common.collect.Multimap.values.

Returns a view collection containing the value from each key-value pair contained in this multimap, without collapsing duplicates (so values().size() == size()).

Changes to the returned collection will update the underlying multimap, and vice versa. However, adding to the returned collection is not possible.

Annotations
@Override