Class TransformedMultiValuedMap<K,V>
- Type Parameters:
K
- the type of the keys in this mapV
- the type of the values in this map
- All Implemented Interfaces:
Serializable
,MultiValuedMap<K,
V>
MultiValuedMap
to transform objects that are added.
This class affects the MultiValuedMap put methods. Thus objects must be removed or searched for using their transformed form. For example, if the transformation converts Strings to Integers, you must use the Integer form to remove objects.
Note that TransformedMultiValuedMap is not synchronized and is not thread-safe.
- Since:
- 4.1
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
TransformedMultiValuedMap
(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Constructor that wraps (not copies). -
Method Summary
Modifier and TypeMethodDescriptionboolean
Adds a key-value mapping to this multivalued map.boolean
Copies all mappings from the specified map to this multivalued map (optional operation).boolean
Adds a mapping to the specified key for all values contained in the given Iterable.boolean
putAll
(MultiValuedMap<? extends K, ? extends V> map) Copies all mappings from the specified map to this multivalued map (optional operation).static <K,
V> TransformedMultiValuedMap <K, V> transformedMap
(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Factory method to create a transforming MultiValuedMap that will transform existing contents of the specified map.static <K,
V> TransformedMultiValuedMap <K, V> transformingMap
(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Factory method to create a transforming MultiValuedMap.protected K
transformKey
(K object) Transforms a key.protected V
transformValue
(V object) Transforms a value.Methods inherited from class org.apache.commons.collections4.multimap.AbstractMultiValuedMapDecorator
asMap, clear, containsKey, containsMapping, containsValue, decorated, entries, equals, get, hashCode, isEmpty, keys, keySet, mapIterator, remove, removeMapping, size, toString, values
-
Constructor Details
-
TransformedMultiValuedMap
protected TransformedMultiValuedMap(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Constructor that wraps (not copies).If there are any elements already in the collection being decorated, they are NOT transformed.
- Parameters:
map
- the MultiValuedMap to decorate, may not be nullkeyTransformer
- the transformer to use for key conversion, null means no conversionvalueTransformer
- the transformer to use for value conversion, null means no conversion- Throws:
NullPointerException
- if map is null
-
-
Method Details
-
transformedMap
public static <K,V> TransformedMultiValuedMap<K,V> transformedMap(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Factory method to create a transforming MultiValuedMap that will transform existing contents of the specified map.If there are any elements already in the map being decorated, they will be transformed by this method. Contrast this with
transformingMap(MultiValuedMap, Transformer, Transformer)
.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- the MultiValuedMap to decorate, may not be nullkeyTransformer
- the transformer to use for key conversion, null means no conversionvalueTransformer
- the transformer to use for value conversion, null means no conversion- Returns:
- a new transformed MultiValuedMap
- Throws:
NullPointerException
- if map is null
-
transformingMap
public static <K,V> TransformedMultiValuedMap<K,V> transformingMap(MultiValuedMap<K, V> map, Transformer<? super K, ? extends K> keyTransformer, Transformer<? super V, ? extends V> valueTransformer) Factory method to create a transforming MultiValuedMap.If there are any elements already in the map being decorated, they are NOT transformed. Contrast this with
transformedMap(MultiValuedMap, Transformer, Transformer)
.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- the MultiValuedMap to decorate, may not be nullkeyTransformer
- the transformer to use for key conversion, null means no conversionvalueTransformer
- the transformer to use for value conversion, null means no conversion- Returns:
- a new transformed MultiValuedMap
- Throws:
NullPointerException
- if map is null
-
put
Description copied from interface:MultiValuedMap
Adds a key-value mapping to this multivalued 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 multivalued map has been increased because of this operation.- Specified by:
put
in interfaceMultiValuedMap<K,
V> - Overrides:
put
in classAbstractMultiValuedMapDecorator<K,
V> - Parameters:
key
- the key to store againstvalue
- the value to add to the collection at the key- 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
-
putAll
Description copied from interface:MultiValuedMap
Adds a mapping to the specified key for all values contained in the given Iterable.- Specified by:
putAll
in interfaceMultiValuedMap<K,
V> - Overrides:
putAll
in classAbstractMultiValuedMapDecorator<K,
V> - Parameters:
key
- the key to store againstvalues
- the values to add to the collection at the key, may not be null- Returns:
- true if the map changed as a result of this operation
-
putAll
Description copied from interface:MultiValuedMap
Copies all mappings from the specified map to this multivalued 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 keyk
to valuev
in the specified map.The behavior of this operation is undefined if the specified map is modified while the operation is in progress.
- Specified by:
putAll
in interfaceMultiValuedMap<K,
V> - Overrides:
putAll
in classAbstractMultiValuedMapDecorator<K,
V> - Parameters:
map
- mappings to be stored in this map, may not be null- Returns:
- true if the map changed as a result of this operation
-
putAll
Description copied from interface:MultiValuedMap
Copies all mappings from the specified map to this multivalued 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 keyk
to valuev
in the specified map.The behavior of this operation is undefined if the specified map is modified while the operation is in progress.
- Specified by:
putAll
in interfaceMultiValuedMap<K,
V> - Overrides:
putAll
in classAbstractMultiValuedMapDecorator<K,
V> - Parameters:
map
- mappings to be stored in this map, may not be null- Returns:
- true if the map changed as a result of this operation
-
transformKey
Transforms a key.The transformer itself may throw an exception if necessary.
- Parameters:
object
- the object to transform- Returns:
- the transformed object
-
transformValue
Transforms a value.The transformer itself may throw an exception if necessary.
- Parameters:
object
- the object to transform- Returns:
- the transformed object
-