Class MultiMapUtils
- java.lang.Object
-
- org.apache.commons.collections4.MultiMapUtils
-
public class MultiMapUtils extends java.lang.Object
Provides utility methods and decorators forMultiValuedMap
instances.It contains various type safe and null safe methods. Additionally, it provides the following decorators:
- Since:
- 4.1
-
-
Field Summary
Fields Modifier and Type Field Description static MultiValuedMap
EMPTY_MULTI_VALUED_MAP
An emptyUnmodifiableMultiValuedMap
.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <K,V>
MultiValuedMap<K,V>emptyIfNull(MultiValuedMap<K,V> map)
Returns an immutable emptyMultiValuedMap
if the argument isnull
, or the argument itself otherwise.static <K,V>
MultiValuedMap<K,V>emptyMultiValuedMap()
Returns immutable EMPTY_MULTI_VALUED_MAP with generic type safety.static <K,V>
java.util.Collection<V>getCollection(MultiValuedMap<K,V> map, K key)
Gets a Collection fromMultiValuedMap
in a null-safe manner.static <K,V>
Bag<V>getValuesAsBag(MultiValuedMap<K,V> map, K key)
Gets a Bag fromMultiValuedMap
in a null-safe manner.static <K,V>
java.util.List<V>getValuesAsList(MultiValuedMap<K,V> map, K key)
Gets a List fromMultiValuedMap
in a null-safe manner.static <K,V>
java.util.Set<V>getValuesAsSet(MultiValuedMap<K,V> map, K key)
Gets a Set fromMultiValuedMap
in a null-safe manner.static boolean
isEmpty(MultiValuedMap<?,?> map)
Null-safe check if the specifiedMultiValuedMap
is empty.static <K,V>
ListValuedMap<K,V>newListValuedHashMap()
Creates aListValuedMap
with anArrayList
as collection class to store the values mapped to a key.static <K,V>
SetValuedMap<K,V>newSetValuedHashMap()
Creates aSetValuedMap
with anHashSet
as collection class to store the values mapped to a key.static <K,V>
MultiValuedMap<K,V>transformedMultiValuedMap(MultiValuedMap<K,V> map, Transformer<? super K,? extends K> keyTransformer, Transformer<? super V,? extends V> valueTransformer)
Returns aTransformedMultiValuedMap
backed by the given map.static <K,V>
MultiValuedMap<K,V>unmodifiableMultiValuedMap(MultiValuedMap<? extends K,? extends V> map)
Returns anUnmodifiableMultiValuedMap
backed by the given map.
-
-
-
Field Detail
-
EMPTY_MULTI_VALUED_MAP
public static final MultiValuedMap EMPTY_MULTI_VALUED_MAP
An emptyUnmodifiableMultiValuedMap
.
-
-
Method Detail
-
emptyMultiValuedMap
public static <K,V> MultiValuedMap<K,V> emptyMultiValuedMap()
Returns immutable EMPTY_MULTI_VALUED_MAP with generic type safety.- Type Parameters:
K
- the type of key in the mapV
- the type of value in the map- Returns:
- immutable and empty
MultiValuedMap
-
emptyIfNull
public static <K,V> MultiValuedMap<K,V> emptyIfNull(MultiValuedMap<K,V> map)
Returns an immutable emptyMultiValuedMap
if the argument isnull
, or the argument itself otherwise.- Type Parameters:
K
- the type of key in the mapV
- the type of value in the map- Parameters:
map
- the map, may be null- Returns:
- an empty
MultiValuedMap
if the argument is null
-
isEmpty
public static boolean isEmpty(MultiValuedMap<?,?> map)
Null-safe check if the specifiedMultiValuedMap
is empty.If the provided map is null, returns true.
- Parameters:
map
- the map to check, may be null- Returns:
- true if the map is empty or null
-
getCollection
public static <K,V> java.util.Collection<V> getCollection(MultiValuedMap<K,V> map, K key)
Gets a Collection fromMultiValuedMap
in a null-safe manner.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to usekey
- the key to look up- Returns:
- the Collection in the
MultiValuedMap
, or null if input map is null
-
getValuesAsList
public static <K,V> java.util.List<V> getValuesAsList(MultiValuedMap<K,V> map, K key)
Gets a List fromMultiValuedMap
in a null-safe manner.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to usekey
- the key to look up- Returns:
- the Collection in the
MultiValuedMap
as List, or null if input map is null
-
getValuesAsSet
public static <K,V> java.util.Set<V> getValuesAsSet(MultiValuedMap<K,V> map, K key)
Gets a Set fromMultiValuedMap
in a null-safe manner.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to usekey
- the key to look up- Returns:
- the Collection in the
MultiValuedMap
as Set, or null if input map is null
-
getValuesAsBag
public static <K,V> Bag<V> getValuesAsBag(MultiValuedMap<K,V> map, K key)
Gets a Bag fromMultiValuedMap
in a null-safe manner.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to usekey
- the key to look up- Returns:
- the Collection in the
MultiValuedMap
as Bag, or null if input map is null
-
newListValuedHashMap
public static <K,V> ListValuedMap<K,V> newListValuedHashMap()
Creates aListValuedMap
with anArrayList
as collection class to store the values mapped to a key.- Type Parameters:
K
- the key typeV
- the value type- Returns:
- a new
ListValuedMap
-
newSetValuedHashMap
public static <K,V> SetValuedMap<K,V> newSetValuedHashMap()
Creates aSetValuedMap
with anHashSet
as collection class to store the values mapped to a key.- Type Parameters:
K
- the key typeV
- the value type- Returns:
- a new
SetValuedMap
-
unmodifiableMultiValuedMap
public static <K,V> MultiValuedMap<K,V> unmodifiableMultiValuedMap(MultiValuedMap<? extends K,? extends V> map)
Returns anUnmodifiableMultiValuedMap
backed by the given map.- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to decorate, must not be null- Returns:
- an unmodifiable
MultiValuedMap
backed by the provided map - Throws:
java.lang.NullPointerException
- if map is null
-
transformedMultiValuedMap
public static <K,V> MultiValuedMap<K,V> transformedMultiValuedMap(MultiValuedMap<K,V> map, Transformer<? super K,? extends K> keyTransformer, Transformer<? super V,? extends V> valueTransformer)
Returns aTransformedMultiValuedMap
backed by the given map.This method returns a new
MultiValuedMap
(decorating the specified map) that will transform any new entries added to it. Existing entries in the specified map will not be transformed. If you want that behaviour, seeTransformedMultiValuedMap.transformedMap(org.apache.commons.collections4.MultiValuedMap<K, V>, org.apache.commons.collections4.Transformer<? super K, ? extends K>, org.apache.commons.collections4.Transformer<? super V, ? extends V>)
.Each object is passed through the transformers as it is added to the Map. It is important not to use the original map after invoking this method, as it is a back door for adding untransformed objects.
If there are any elements already in the map being decorated, they are NOT transformed.
- Type Parameters:
K
- the key typeV
- the value type- Parameters:
map
- theMultiValuedMap
to transform, must not be null, typically emptykeyTransformer
- the transformer for the map keys, null means no transformationvalueTransformer
- the transformer for the map values, null means no transformation- Returns:
- a transformed
MultiValuedMap
backed by the given map - Throws:
java.lang.NullPointerException
- if map is null
-
-