Top Description Methods
org.apache.commons.collections4

public Interface MultiValuedMap<K, V>

Known Direct Subinterfaces
org.apache.commons.collections4.SetValuedMap, org.apache.commons.collections4.ListValuedMap
Known Direct Implementers
org.apache.commons.collections4.multimap.AbstractMultiValuedMap, org.apache.commons.collections4.multimap.AbstractMultiValuedMapDecorator
Type Parameters
<K>
the type of the keys in this map
<V>
the type of the values in this map
Imports
java.util.Collection, .Map, .Map.Entry, .Set

Defines a map that holds a collection of values against each key.

A MultiValuedMap is a Map with slightly different semantics:

For example:

MultiValuedMap<K, String> map = new MultiValuedHashMap<K, String>();
map.put(key, "A");
map.put(key, "B");
map.put(key, "C");
Collection<String> coll = map.get(key);

coll will be a collection containing "A", "B", "C".

Since
4.1

Method Summary

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

Returns:

a map view of the mappings in this multi-valued map
asMap
()

Returns a view of this multi-valued map as a Map from each distinct key to the non-empty collection of that key's associated values.

public void
clear()

Removes all of the mappings from this map (optional operation).

public boolean

Returns:

true if this map contains a mapping for the specified key
containsKey
(Object
key whose presence in this map is to be tested
key
)

Returns true if this map contains a mapping for the specified key.

public boolean

Returns:

true if the map contains the value
containsMapping
(Object
the key to search for
key
,
Object
the value to search for
value
)

Checks whether the map contains a mapping for the specified key and value.

public boolean

Returns:

true if the map contains the value
containsValue
(Object
the value to search for
value
)

Checks whether the map contains at least one mapping for the specified value.

public Collection<Map.Entry<K, V>>

Returns:

a set view of the mappings contained in this map
entries
()

Returns a Collection view of the mappings contained in this multi-valued map.

public Collection<V>

Returns:

the Collection of values, implementations should return an empty collection for no mapping
get
(K
the key to retrieve
key
)

Returns a view collection of the values associated with the specified key.

public boolean

Returns:

true if this map contains no key-value mappings
isEmpty
()

Returns true if this map contains no key-value mappings.

public MultiSet<K>

Returns:

a multiset view of the keys contained in this map
keys
()

Returns a MultiSet view of the keys contained in this multi-valued map.

public Set<K>

Returns:

a set view of the keys contained in this map
keySet
()

Returns a Set view of the keys contained in this multi-valued map.

public MapIterator<K, V>

Returns:

a map iterator
mapIterator
()

Obtains a MapIterator over this multi-valued map.

public boolean

Returns:

true if the map changed as a result of this put operation, or false if the map already contained the key-value mapping and the collection type does not allow duplicate values, e.g. when using a Set
put
(K
the key to store against
key
,
V
the value to add to the collection at the key
value
)

Adds a key-value mapping to this multi-valued map.

public boolean

Returns:

true if the map changed as a result of this operation
putAll
(K
the key to store against
key
,
Iterable<? extends V>
the values to add to the collection at the key, may not be null
values
)

Adds a mapping to the specified key for all values contained in the given Iterable.

public boolean

Returns:

true if the map changed as a result of this operation
putAll
(Map<? extends K, ? extends V>
mappings to be stored in this map, may not be null
map
)

Copies all mappings from the specified map to this multi-valued map (optional operation).

public boolean

Returns:

true if the map changed as a result of this operation
putAll
(MultiValuedMap<? extends K, ? extends V>
mappings to be stored in this map, may not be null
map
)

Copies all mappings from the specified map to this multi-valued map (optional operation).

public Collection<V>

Returns:

the values that were removed
remove
(Object
the key to remove values from
key
)

Removes all values associated with the specified key.

public boolean

Returns:

true if the mapping was removed, false otherwise
removeMapping
(Object
the key to remove from
key
,
Object
the item to remove
item
)

Removes a key-value mapping from the map.

public int

Returns:

the total size of the map
size
()

Gets the total size of the map.

public Collection<V>

Returns:

a collection view of the values contained in this multi-valued map
values
()

Gets a Collection view of all values contained in this multi-valued map.

Method Detail

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

Returns a view of this multi-valued map as a Map from each distinct key to the non-empty 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 multi-valued map; 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 multi-valued map, and vice versa. The map does not support put or putAll, nor do its entries support setValue.

Returns:Map<K, Collection<V>>

a map view of the mappings in this multi-valued map

clearback to summary
public void clear()

Removes all of the mappings from this map (optional operation).

The map will be empty after this call returns.

Exceptions
UnsupportedOperationException:
if the map is unmodifiable
containsKeyback to summary
public boolean containsKey(Object key)

Returns true if this map contains a mapping for the specified key. More formally, returns true if and only if this map contains a mapping for a key k such that (key==null ? k==null : key.equals(k)). (There can be at most one such mapping.)

Parameters
key:Object

key whose presence in this map is to be tested

Returns:boolean

true if this map contains a mapping for the specified key

Exceptions
NullPointerException:
if the specified key is null and this map does not permit null keys (optional)
containsMappingback to summary
public boolean containsMapping(Object key, Object value)

Checks whether the map contains a mapping for the specified key and value.

Parameters
key:Object

the key to search for

value:Object

the value to search for

Returns:boolean

true if the map contains the value

containsValueback to summary
public boolean containsValue(Object value)

Checks whether the map contains at least one mapping for the specified value.

Parameters
value:Object

the value to search for

Returns:boolean

true if the map contains the value

Exceptions
NullPointerException:
if the value is null and null values are not supported by the used collection types (optional)
entriesback to summary
public Collection<Map.Entry<K, V>> entries()

Returns a Collection view of the mappings contained in this multi-valued map.

The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa.

Returns:Collection<Map.Entry<K, V>>

a set view of the mappings contained in this map

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

Returns a view collection of the values associated with the specified key.

This method will return an empty collection if containsKey(Object) returns false. Changes to the returned collection will update the underlying MultiValuedMap and vice-versa.

Parameters
key:K

the key to retrieve

Returns:Collection<V>

the Collection of values, implementations should return an empty collection for no mapping

Exceptions
NullPointerException:
if the key is null and null keys are invalid (optional)
isEmptyback to summary
public boolean isEmpty()

Returns true if this map contains no key-value mappings.

Returns:boolean

true if this map contains no key-value mappings

keysback to summary
public MultiSet<K> keys()

Returns a MultiSet view of the keys contained in this multi-valued map.

The MultiSet#getCount(Object) method of the returned multiset will give the same result a calling get(Object).size() for the same key.

This multiset is backed by the map, so any changes in the map are reflected in the multiset.

Returns:MultiSet<K>

a multiset view of the keys contained in this map

keySetback to summary
public Set<K> keySet()

Returns a Set view of the keys contained in this multi-valued map.

The set is backed by the map, so changes to the map are reflected in the set, and vice-versa.

If the map is modified while an iteration over the set is in progress (except through the iterator's own remove operation), the result of the iteration is undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll, and clear operations. It does not support the add or addAll operations.

Returns:Set<K>

a set view of the keys contained in this map

mapIteratorback to summary
public MapIterator<K, V> mapIterator()

Obtains a MapIterator over this multi-valued map.

A map iterator is an efficient way of iterating over maps. There is no need to access the entries collection or use Map.Entry objects.

Returns:MapIterator<K, V>

a map iterator

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

Adds a key-value mapping to this multi-valued map.

Unlike a normal Map the previous value is not replaced. Instead the new value is added to the collection stored against the key. Depending on the collection type used, duplicate key-value mappings may be allowed.

The method will return true if the size of the multi-valued map has been increased because of this operation.

Parameters
key:K

the key to store against

value:V

the value to add to the collection at the key

Returns:boolean

true if the map changed as a result of this put operation, or false if the map already contained the key-value mapping and the collection type does not allow duplicate values, e.g. when using a Set

Exceptions
UnsupportedOperationException:
if the put operation is not supported by this multi-valued map, e.g. if it is unmodifiable
NullPointerException:
if the key or value is null and null is invalid (optional)
IllegalArgumentException:
if some aspect of the specified key or value prevents it from being stored in this multi-valued map
putAllback to summary
public boolean putAll(K key, Iterable<? extends V> values)

Adds a mapping to the specified key for all values contained in the given Iterable.

Parameters
key:K

the key to store against

values:Iterable<? extends V>

the values to add to the collection at the key, may not be null

Returns:boolean

true if the map changed as a result of this operation

Exceptions
NullPointerException:
if the specified iterable is null, or if this map does not permit null keys or values, and the specified key or values contain null (optional)
putAllback to summary
public boolean putAll(Map<? extends K, ? extends V> map)

Copies all mappings from the specified map to this multi-valued map (optional operation).

The effect of this call is equivalent to that of calling put(k, v) on this map once for each mapping from key k to value v in the specified map.

The behavior of this operation is undefined if the specified map is modified while the operation is in progress.

Parameters
map:Map<? extends K, ? extends V>

mappings to be stored in this map, may not be null

Returns:boolean

true if the map changed as a result of this operation

Exceptions
UnsupportedOperationException:
if the putAll operation is not supported by this map
NullPointerException:
if the specified map is null, or if this map does not permit null keys or values, and the specified map contains null keys or values (optional)
IllegalArgumentException:
if some property of a key or value in the specified map prevents it from being stored in this map
putAllback to summary
public boolean putAll(MultiValuedMap<? extends K, ? extends V> map)

Copies all mappings from the specified map to this multi-valued map (optional operation).

The effect of this call is equivalent to that of calling put(k, v) on this map once for each mapping from key k to value v in the specified map.

The behavior of this operation is undefined if the specified map is modified while the operation is in progress.

Parameters
map:MultiValuedMap<? extends K, ? extends V>

mappings to be stored in this map, may not be null

Returns:boolean

true if the map changed as a result of this operation

Exceptions
UnsupportedOperationException:
if the putAll operation is not supported by this map
NullPointerException:
if the specified map is null, or if this map does not permit null keys or values, and the specified map contains null keys or values (optional)
IllegalArgumentException:
if some property of a key or value in the specified map prevents it from being stored in this map
removeback to summary
public Collection<V> remove(Object key)

Removes all values associated with the specified key.

The returned collection may be modifiable, but updates will not be propagated to this multi-valued map. In case no mapping was stored for the specified key, an empty, unmodifiable collection will be returned.

Parameters
key:Object

the key to remove values from

Returns:Collection<V>

the values that were removed

Exceptions
UnsupportedOperationException:
if the map is unmodifiable
NullPointerException:
if the key is null and null keys are invalid (optional)
removeMappingback to summary
public boolean removeMapping(Object key, Object item)

Removes a key-value mapping from the map.

The item is removed from the collection mapped to the specified key. Other values attached to that key are unaffected.

If the last value for a key is removed, implementations typically return an empty collection from a subsequent get(Object).

Parameters
key:Object

the key to remove from

item:Object

the item to remove

Returns:boolean

true if the mapping was removed, false otherwise

Exceptions
UnsupportedOperationException:
if the map is unmodifiable
NullPointerException:
if the key or value is null and null is invalid (optional)
sizeback to summary
public int size()

Gets the total size of the map.

Implementations would return the total size of the map which is the count of the values from all keys.

Returns:int

the total size of the map

valuesback to summary
public Collection<V> values()

Gets a Collection view of all values contained in this multi-valued map.

Implementations typically return a collection containing the combination of values from all keys.

Returns:Collection<V>

a collection view of the values contained in this multi-valued map