public class MapUtils extends Object
Map and
SortedMap instances.
It contains various type safe methods as well as other useful features like deep copying.
It also provides the following decorators:
fixedSizeMap(Map) fixedSizeSortedMap(SortedMap) lazyMap(Map,Factory) lazyMap(Map,Transformer) lazySortedMap(SortedMap,Factory) lazySortedMap(SortedMap,Transformer) predicatedMap(Map,Predicate,Predicate) predicatedSortedMap(SortedMap,Predicate,Predicate) transformedMap(Map, Transformer, Transformer) transformedSortedMap(SortedMap, Transformer, Transformer) multiValueMap( Map ) multiValueMap( Map, Class ) multiValueMap( Map, Factory ) | Modifier and Type | Field and Description |
|---|---|
static SortedMap |
EMPTY_SORTED_MAP
An empty unmodifiable sorted map.
|
| Modifier and Type | Method and Description |
|---|---|
static void |
debugPrint(PrintStream
Prints the given map with nice line breaks.
|
static <K |
emptyIfNull(Map
Returns an immutable empty map if the argument is
null, or the argument itself otherwise.
|
static <K |
fixedSizeMap(Map
Returns a fixed-sized map backed by the given map.
|
static <K |
fixedSizeSortedMap(SortedMap
Returns a fixed-sized sorted map backed by the given sorted map.
|
static <K> Boolean |
getBoolean(Map
Gets a Boolean from a Map in a null-safe manner.
|
static <K> Boolean |
getBoolean(Map
Looks up the given key in the given map, converting the result into a boolean, using the default value if the the conversion fails.
|
static <K> boolean |
getBooleanValue(Map
Gets a boolean from a Map in a null-safe manner.
|
static <K> boolean |
getBooleanValue(Map
Gets a boolean from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Byte |
getByte(Map
Gets a Byte from a Map in a null-safe manner.
|
static <K> Byte |
getByte(Map
Looks up the given key in the given map, converting the result into a byte, using the default value if the the conversion fails.
|
static <K> byte |
getByteValue(Map
Gets a byte from a Map in a null-safe manner.
|
static <K> byte |
getByteValue(Map
Gets a byte from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Double |
getDouble(Map
Gets a Double from a Map in a null-safe manner.
|
static <K> Double |
getDouble(Map
Looks up the given key in the given map, converting the result into a double, using the default value if the the conversion fails.
|
static <K> double |
getDoubleValue(Map
Gets a double from a Map in a null-safe manner.
|
static <K> double |
getDoubleValue(Map
Gets a double from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Float |
getFloat(Map
Gets a Float from a Map in a null-safe manner.
|
static <K> Float |
getFloat(Map
Looks up the given key in the given map, converting the result into a float, using the default value if the the conversion fails.
|
static <K> float |
getFloatValue(Map
Gets a float from a Map in a null-safe manner.
|
static <K> float |
getFloatValue(Map
Gets a float from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Integer |
getInteger(Map
Gets a Integer from a Map in a null-safe manner.
|
static <K> Integer |
getInteger(Map
Looks up the given key in the given map, converting the result into an integer, using the default value if the the conversion fails.
|
static <K> int |
getIntValue(Map
Gets an int from a Map in a null-safe manner.
|
static <K> int |
getIntValue(Map
Gets an int from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Long |
getLong(Map
Gets a Long from a Map in a null-safe manner.
|
static <K> Long |
getLong(Map
Looks up the given key in the given map, converting the result into a long, using the default value if the the conversion fails.
|
static <K> long |
getLongValue(Map
Gets a long from a Map in a null-safe manner.
|
static <K> long |
getLongValue(Map
Gets a long from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> Map |
getMap(Map
Gets a Map from a Map in a null-safe manner.
|
static <K> Map |
getMap(Map
Looks up the given key in the given map, converting the result into a map, using the default value if the the conversion fails.
|
static <K> Number |
getNumber(Map
Gets a Number from a Map in a null-safe manner.
|
static <K> Number |
getNumber(Map
Looks up the given key in the given map, converting the result into a number, using the default value if the the conversion fails.
|
static <K |
getObject(Map
Gets from a Map in a null-safe manner.
|
static <K |
getObject(Map
Looks up the given key in the given map, converting null into the given default value.
|
static <K> Short |
getShort(Map
Gets a Short from a Map in a null-safe manner.
|
static <K> Short |
getShort(Map
Looks up the given key in the given map, converting the result into a short, using the default value if the the conversion fails.
|
static <K> short |
getShortValue(Map
Gets a short from a Map in a null-safe manner.
|
static <K> short |
getShortValue(Map
Gets a short from a Map in a null-safe manner, using the default value if the the conversion fails.
|
static <K> String |
getString(Map
Gets a String from a Map in a null-safe manner.
|
static <K> String |
getString(Map
Looks up the given key in the given map, converting the result into a string, using the default value if the the conversion fails.
|
static <K |
invertMap(Map
Inverts the supplied map returning a new HashMap such that the keys of the input are swapped with the values.
|
static boolean |
isEmpty(Map
Null-safe check if the specified map is empty.
|
static boolean |
isNotEmpty(Map
Null-safe check if the specified map is not empty.
|
static <K |
iterableMap(Map
Get the specified
Map as an
IterableMap.
|
static <K |
iterableSortedMap(SortedMap
Get the specified
SortedMap as an
IterableSortedMap.
|
static <K |
lazyMap(Map
Returns a "lazy" map whose values will be created on demand.
|
static <K |
lazyMap(Map
Returns a "lazy" map whose values will be created on demand.
|
static <K |
lazySortedMap(SortedMap
Returns a "lazy" sorted map whose values will be created on demand.
|
static <K |
lazySortedMap(SortedMap
Returns a "lazy" sorted map whose values will be created on demand.
|
static <K |
multiValueMap(Map
Deprecated.
since 4.1, use
MultiValuedMap instead
|
static <K |
multiValueMap(Map
Deprecated.
since 4.1, use
MultiValuedMap instead
|
static <K |
multiValueMap(Map
Deprecated.
since 4.1, use
MultiValuedMap instead
|
static <K |
orderedMap(Map
Returns a map that maintains the order of keys that are added backed by the given map.
|
static <K |
populateMap(Map
Populates a Map using the supplied
Transformers to transform the elements into keys and values.
|
static <K |
populateMap(Map
Populates a Map using the supplied
Transformer to transform the elements into keys, using the unaltered element as the value in the
Map.
|
static <K |
populateMap(MultiMap
Populates a MultiMap using the supplied
Transformers to transform the elements into keys and values.
|
static <K |
populateMap(MultiMap
Populates a MultiMap using the supplied
Transformer to transform the elements into keys, using the unaltered element as the value in the
MultiMap.
|
static <K |
predicatedMap(Map
Returns a predicated (validating) map backed by the given map.
|
static <K |
predicatedSortedMap(SortedMap
Returns a predicated (validating) sorted map backed by the given map.
|
static <K |
putAll(Map
Puts all the keys and values from the specified array into the map.
|
static <K> void |
safeAddToMap(Map
Protects against adding null values to a map.
|
static <K |
synchronizedMap(Map
Returns a synchronized map backed by the given map.
|
static <K |
synchronizedSortedMap(SortedMap
Returns a synchronized sorted map backed by the given sorted map.
|
static Map |
toMap(ResourceBundle
Creates a new HashMap using data copied from a ResourceBundle.
|
static <K |
toProperties(Map
Gets a new Properties object initialised with the values from a Map.
|
static <K |
transformedMap(Map
Returns a transformed map backed by the given map.
|
static <K |
transformedSortedMap(SortedMap
Returns a transformed sorted map backed by the given map.
|
static <K |
unmodifiableMap(Map
Returns an unmodifiable map backed by the given map.
|
static <K |
unmodifiableSortedMap(SortedMap
Returns an unmodifiable sorted map backed by the given sorted map.
|
static void |
verbosePrint(PrintStream
Prints the given map with nice line breaks.
|
public static final SortedMapEMPTY_SORTED_MAP
public static <K,V> V getObject(Map <? super K ,V> map, K key)
K - the key type
V - the value type
map - the map to use
key - the key to look up
null if null map input
public static <K> StringgetString(Map <? super K ,?> map, K key)
The String is obtained via toString.
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> BooleangetBoolean(Map <? super K ,?> map, K key)
If the value is a Boolean it is returned directly. If the value is a String and it equals 'true' ignoring case then true is returned, otherwise false. If the value is a Number an integer zero value returns false and non-zero returns true. Otherwise, null is returned.
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> NumbergetNumber(Map <? super K ,?> map, K key)
If the value is a Number it is returned directly. If the value is a String it is converted using NumberFormat on the system default formatter returning null if the conversion fails. Otherwise, null is returned.
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> BytegetByte(Map <? super K ,?> map, K key)
The Byte is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> ShortgetShort(Map <? super K ,?> map, K key)
The Short is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> IntegergetInteger(Map <? super K ,?> map, K key)
The Integer is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> LonggetLong(Map <? super K ,?> map, K key)
The Long is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> FloatgetFloat(Map <? super K ,?> map, K key)
The Float is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> DoublegetDouble(Map <? super K ,?> map, K key)
The Double is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K> Map<? ,?> getMap(Map <? super K ,?> map, K key)
If the value returned from the specified map is not a Map then null is returned.
K - the key type
map - the map to use
key - the key to look up
null if null map input
public static <K,V> V getObject(Map <K ,V> map, K key, V defaultValue)
K - the key type
V - the value type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null
public static <K> StringgetString(Map <? super K ,?> map, K key, String defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> BooleangetBoolean(Map <? super K ,?> map, K key, Boolean defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> NumbergetNumber(Map <? super K ,?> map, K key, Number defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> BytegetByte(Map <? super K ,?> map, K key, Byte defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> ShortgetShort(Map <? super K ,?> map, K key, Short defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> IntegergetInteger(Map <? super K ,?> map, K key, Integer defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> LonggetLong(Map <? super K ,?> map, K key, Long defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> FloatgetFloat(Map <? super K ,?> map, K key, Float defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> DoublegetDouble(Map <? super K ,?> map, K key, Double defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> Map<? ,?> getMap(Map <? super K ,?> map, K key, Map <? ,?> defaultValue)
K - the key type
map - the map whose value to look up
key - the key of the value to look up in that map
defaultValue - what to return if the value is null or if the conversion fails
public static <K> boolean getBooleanValue(Map<? super K ,?> map, K key)
If the value is a Boolean its value is returned. If the value is a String and it equals 'true' ignoring case then true is returned, otherwise false. If the value is a Number an integer zero value returns false and non-zero returns true. Otherwise, false is returned.
K - the key type
map - the map to use
key - the key to look up
false if null map input
public static <K> byte getByteValue(Map<? super K ,?> map, K key)
The byte is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0 if null map input
public static <K> short getShortValue(Map<? super K ,?> map, K key)
The short is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0 if null map input
public static <K> int getIntValue(Map<? super K ,?> map, K key)
The int is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0 if null map input
public static <K> long getLongValue(Map<? super K ,?> map, K key)
The long is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0L if null map input
public static <K> float getFloatValue(Map<? super K ,?> map, K key)
The float is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0.0F if null map input
public static <K> double getDoubleValue(Map<? super K ,?> map, K key)
The double is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
0.0 if null map input
public static <K> boolean getBooleanValue(Map<? super K ,?> map, K key, boolean defaultValue)
If the value is a Boolean its value is returned. If the value is a String and it equals 'true' ignoring case then true is returned, otherwise false. If the value is a Number an integer zero value returns false and non-zero returns true. Otherwise, defaultValue is returned.
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> byte getByteValue(Map<? super K ,?> map, K key, byte defaultValue)
The byte is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> short getShortValue(Map<? super K ,?> map, K key, short defaultValue)
The short is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> int getIntValue(Map<? super K ,?> map, K key, int defaultValue)
The int is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> long getLongValue(Map<? super K ,?> map, K key, long defaultValue)
The long is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> float getFloatValue(Map<? super K ,?> map, K key, float defaultValue)
The float is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K> double getDoubleValue(Map<? super K ,?> map, K key, double defaultValue)
The double is obtained from the results of getNumber(Map,Object).
K - the key type
map - the map to use
key - the key to look up
defaultValue - return if the value is null or if the conversion fails
defaultValue if null map input
public static <K,V> Properties toProperties(Map <K ,V> map)
A Properties object may only store non-null keys and values, thus if the provided map contains either a key or value which is null, a NullPointerException will be thrown.
K - the key type
V - the value type
map - the map to convert to a Properties object
NullPointerException - if a key or value in the provided map is
null
public static Map<String ,Object > toMap(ResourceBundle resourceBundle)
resourceBundle - the resource bundle to convert, may not be null
NullPointerException - if the bundle is null
public static void verbosePrint(PrintStreamout, Object label, Map <? ,?> map)
This method prints a nicely formatted String describing the Map. Each map entry will be printed with key and value. When the value is a Map, recursive behaviour occurs.
This method is NOT thread-safe in any special way. You must manually synchronize on either this class or the stream as required.
out - the stream to print to, must not be null
label - The label to be used, may be
null. If
null, the label is not output. It typically represents the name of the property in a bean or similar.
map - The map to print, may be
null. If
null, the text 'null' is output.
NullPointerException - if the stream is
null
public static void debugPrint(PrintStreamout, Object label, Map <? ,?> map)
This method prints a nicely formatted String describing the Map. Each map entry will be printed with key, value and value classname. When the value is a Map, recursive behaviour occurs.
This method is NOT thread-safe in any special way. You must manually synchronize on either this class or the stream as required.
out - the stream to print to, must not be null
label - The label to be used, may be
null. If
null, the label is not output. It typically represents the name of the property in a bean or similar.
map - The map to print, may be
null. If
null, the text 'null' is output.
NullPointerException - if the stream is
null
public static <K,V> Map <V ,K> invertMap(Map <K ,V> map)
This operation assumes that the inverse mapping is well defined. If the input map had multiple entries with the same value mapped to different keys, the returned map will map one of those keys to the value, but the exact key which will be mapped is undefined.
K - the key type
V - the value type
map - the map to invert, may not be null
NullPointerException - if the map is null
public static <K> void safeAddToMap(Map<? super K ,Object > map, K key, Object value) throws NullPointerException
This method checks the value being added to the map, and if it is null it is replaced by an empty string.
This could be useful if the map does not accept null values, or for receiving data from a source that may provide null or empty string which should be held in the same way in the map.
Keys are not validated. Note that this method can be used to circumvent the map's value type at runtime.
K - the key type
map - the map to add to, may not be null
key - the key
value - the value, null converted to ""
NullPointerException - if the map is null
public static <K,V> Map <K ,V> putAll(Map <K ,V> map, Object [] array)
This method is an alternative to the Map method and constructors. It allows you to build a map from an object array of various possible styles.
If the first entry in the object array implements Map.Entry or KeyValue then the key and value are added from that object. If the first entry in the object array is an object array itself, then it is assumed that index 0 in the sub-array is the key and index 1 is the value. Otherwise, the array is treated as keys and values in alternate indices.
For example, to create a color map:
Map colorMap = MapUtils.putAll(new HashMap(), new String[][] {
{"RED", "#FF0000"},
{"GREEN", "#00FF00"},
{"BLUE", "#0000FF"}
});
or:
Map colorMap = MapUtils.putAll(new HashMap(), new String[] {
"RED", "#FF0000",
"GREEN", "#00FF00",
"BLUE", "#0000FF"
});
or:
Map colorMap = MapUtils.putAll(new HashMap(), new Map.Entry[] {
new DefaultMapEntry("RED", "#FF0000"),
new DefaultMapEntry("GREEN", "#00FF00"),
new DefaultMapEntry("BLUE", "#0000FF")
});
K - the key type
V - the value type
map - the map to populate, must not be null
array - an array to populate from, null ignored
NullPointerException - if map is null
IllegalArgumentException - if sub-array or entry matching used and an entry is invalid
ClassCastException - if the array contents is mixed
public static <K,V> Map <K ,V> emptyIfNull(Map <K ,V> map)
null, or the argument itself otherwise.
K - the key type
V - the value type
map - the map, possibly
null
null
public static boolean isEmpty(Map<? ,?> map)
Null returns true.
map - the map to check, may be null
public static boolean isNotEmpty(Map<? ,?> map)
Null returns false.
map - the map to check, may be null
public static <K,V> Map <K ,V> synchronizedMap(Map <K ,V> map)
You must manually synchronize on the returned buffer's iterator to avoid non-deterministic behavior:
Map m = MapUtils.synchronizedMap(myMap);
Set s = m.keySet(); // outside synchronized block
synchronized (m) { // synchronized on MAP!
Iterator i = s.iterator();
while (i.hasNext()) {
process (i.next());
}
}
This method uses the implementation in
Collections.
K - the key type
V - the value type
map - the map to synchronize, must not be null
public static <K,V> Map <K ,V> unmodifiableMap(Map <? extends K ,? extends V> map)
This method uses the implementation in the decorators subpackage.
K - the key type
V - the value type
map - the map to make unmodifiable, must not be null
NullPointerException - if the map is null
public static <K,V> IterableMap <K ,V> predicatedMap(Map <K ,V> map, Predicate <? super K> keyPred, Predicate <? super V> valuePred)
Only objects that pass the tests in the given predicates can be added to the map. Trying to add an invalid object results in an IllegalArgumentException. Keys must pass the key predicate, values must pass the value predicate. It is important not to use the original map after invoking this method, as it is a backdoor for adding invalid objects.
K - the key type
V - the value type
map - the map to predicate, must not be null
keyPred - the predicate for keys, null means no check
valuePred - the predicate for values, null means no check
NullPointerException - if the Map is null
public static <K,V> IterableMap <K ,V> transformedMap(Map <K ,V> map, Transformer <? super K ,? extends K> keyTransformer, Transformer <? super V ,? extends V> valueTransformer)
This method returns a new map (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, see TransformedMap.
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 backdoor for adding untransformed objects.
If there are any elements already in the map being decorated, they are NOT transformed.
K - the key type
V - the value type
map - the map to transform, must not be null, typically empty
keyTransformer - the transformer for the map keys, null means no transformation
valueTransformer - the transformer for the map values, null means no transformation
NullPointerException - if the Map is null
public static <K,V> IterableMap <K ,V> fixedSizeMap(Map <K ,V> map)
Map.put(Object,Object) method).
K - the key type
V - the value type
map - the map whose size to fix, must not be null
NullPointerException - if the Map is null
public static <K,V> IterableMap <K ,V> lazyMap(Map <K ,V> map, Factory <? extends V> factory)
When the key passed to the returned map's Map method is not present in the map, then the factory will be used to create a new object and that object will become the value associated with that key.
For instance:
Factory factory = new Factory() {
public Object create() {
return new Date();
}
}
Map lazyMap = MapUtils.lazyMap(new HashMap(), factory);
Object obj = lazyMap.get("test");
After the above code is executed,
obj will contain a new
Date instance. Furthermore, that
Date instance is the value for the
"test" key in the map.
K - the key type
V - the value type
map - the map to make lazy, must not be null
factory - the factory for creating new objects, must not be null
NullPointerException - if the Map or Factory is null
public static <K,V> IterableMap <K ,V> lazyMap(Map <K ,V> map, Transformer <? super K ,? extends V> transformerFactory)
When the key passed to the returned map's Map method is not present in the map, then the factory will be used to create a new object and that object will become the value associated with that key. The factory is a Transformer that will be passed the key which it must transform into the value.
For instance:
Transformer factory = new Transformer() {
public Object transform(Object mapKey) {
return new File(mapKey);
}
}
Map lazyMap = MapUtils.lazyMap(new HashMap(), factory);
Object obj = lazyMap.get("C:/dev");
After the above code is executed,
obj will contain a new
File instance for the C drive dev directory. Furthermore, that
File instance is the value for the
"C:/dev" key in the map.
If a lazy map is wrapped by a synchronized map, the result is a simple synchronized cache. When an object is not is the cache, the cache itself calls back to the factory Transformer to populate itself, all within the same synchronized block.
K - the key type
V - the value type
map - the map to make lazy, must not be null
transformerFactory - the factory for creating new objects, must not be null
NullPointerException - if the Map or Transformer is null
public static <K,V> OrderedMap <K ,V> orderedMap(Map <K ,V> map)
If a key is added twice, the order is determined by the first add. The order is observed through the keySet, values and entrySet.
K - the key type
V - the value type
map - the map to order, must not be null
NullPointerException - if the Map is null
@Deprecated public static <K,V> MultiValueMap <K ,V> multiValueMap(Map <K ,? super Collection <V>> map)
MultiValuedMap instead
K - the key type
V - the value type
map - the map to decorate
MultiValueMap
@Deprecated public static <K,V ,C extends Collection <V>> MultiValueMap <K ,V> multiValueMap(Map <K ,C> map, Class <C> collectionClass)
MultiValuedMap instead
K - the key type
V - the value type
C - the collection class type
map - the map to decorate
collectionClass - the type of collections to return from the map (must contain public no-arg constructor and extend Collection)
MultiValueMap
@Deprecated public static <K,V ,C extends Collection <V>> MultiValueMap <K ,V> multiValueMap(Map <K ,C> map, Factory <C> collectionFactory)
MultiValuedMap instead
K - the key type
V - the value type
C - the collection class type
map - the map to decorate
collectionFactory - a factor which creates collection objects
MultiValueMap
public static <K,V> SortedMap <K ,V> synchronizedSortedMap(SortedMap <K ,V> map)
You must manually synchronize on the returned buffer's iterator to avoid non-deterministic behavior:
Map m = MapUtils.synchronizedSortedMap(myMap);
Set s = m.keySet(); // outside synchronized block
synchronized (m) { // synchronized on MAP!
Iterator i = s.iterator();
while (i.hasNext()) {
process (i.next());
}
}
This method uses the implementation in
Collections.
K - the key type
V - the value type
map - the map to synchronize, must not be null
NullPointerException - if the map is null
public static <K,V> SortedMap <K ,V> unmodifiableSortedMap(SortedMap <K ,? extends V> map)
This method uses the implementation in the decorators subpackage.
K - the key type
V - the value type
map - the sorted map to make unmodifiable, must not be null
NullPointerException - if the map is null
public static <K,V> SortedMap <K ,V> predicatedSortedMap(SortedMap <K ,V> map, Predicate <? super K> keyPred, Predicate <? super V> valuePred)
Only objects that pass the tests in the given predicates can be added to the map. Trying to add an invalid object results in an IllegalArgumentException. Keys must pass the key predicate, values must pass the value predicate. It is important not to use the original map after invoking this method, as it is a backdoor for adding invalid objects.
K - the key type
V - the value type
map - the map to predicate, must not be null
keyPred - the predicate for keys, null means no check
valuePred - the predicate for values, null means no check
NullPointerException - if the SortedMap is null
public static <K,V> SortedMap <K ,V> transformedSortedMap(SortedMap <K ,V> map, Transformer <? super K ,? extends K> keyTransformer, Transformer <? super V ,? extends V> valueTransformer)
This method returns a new sorted map (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, see TransformedSortedMap.
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 backdoor for adding untransformed objects.
If there are any elements already in the map being decorated, they are NOT transformed.
K - the key type
V - the value type
map - the map to transform, must not be null, typically empty
keyTransformer - the transformer for the map keys, null means no transformation
valueTransformer - the transformer for the map values, null means no transformation
NullPointerException - if the SortedMap is null
public static <K,V> SortedMap <K ,V> fixedSizeSortedMap(SortedMap <K ,V> map)
Map.put(Object,Object) method).
K - the key type
V - the value type
map - the map whose size to fix, must not be null
NullPointerException - if the SortedMap is null
public static <K,V> SortedMap <K ,V> lazySortedMap(SortedMap <K ,V> map, Factory <? extends V> factory)
When the key passed to the returned map's Map method is not present in the map, then the factory will be used to create a new object and that object will become the value associated with that key.
For instance:
Factory factory = new Factory() {
public Object create() {
return new Date();
}
}
SortedMap lazy = MapUtils.lazySortedMap(new TreeMap(), factory);
Object obj = lazy.get("test");
After the above code is executed,
obj will contain a new
Date instance. Furthermore, that
Date instance is the value for the
"test" key.
K - the key type
V - the value type
map - the map to make lazy, must not be null
factory - the factory for creating new objects, must not be null
NullPointerException - if the SortedMap or Factory is null
public static <K,V> SortedMap <K ,V> lazySortedMap(SortedMap <K ,V> map, Transformer <? super K ,? extends V> transformerFactory)
When the key passed to the returned map's Map method is not present in the map, then the factory will be used to create a new object and that object will become the value associated with that key. The factory is a Transformer that will be passed the key which it must transform into the value.
For instance:
Transformer factory = new Transformer() {
public Object transform(Object mapKey) {
return new File(mapKey);
}
}
SortedMap lazy = MapUtils.lazySortedMap(new TreeMap(), factory);
Object obj = lazy.get("C:/dev");
After the above code is executed,
obj will contain a new
File instance for the C drive dev directory. Furthermore, that
File instance is the value for the
"C:/dev" key in the map.
If a lazy map is wrapped by a synchronized map, the result is a simple synchronized cache. When an object is not is the cache, the cache itself calls back to the factory Transformer to populate itself, all within the same synchronized block.
K - the key type
V - the value type
map - the map to make lazy, must not be null
transformerFactory - the factory for creating new objects, must not be null
NullPointerException - if the Map or Transformer is null
public static <K,V> void populateMap(Map <K ,V> map, Iterable <? extends V> elements, Transformer <V ,K> keyTransformer)
Transformer to transform the elements into keys, using the unaltered element as the value in the
Map.
K - the key type
V - the value type
map - the
Map to populate.
elements - the
Iterable containing the input values for the map.
keyTransformer - the
Transformer used to transform the element into a key value
NullPointerException - if the map, elements or transformer are null
public static <K,V ,E> void populateMap(Map <K ,V> map, Iterable <? extends E> elements, Transformer <E ,K> keyTransformer, Transformer <E ,V> valueTransformer)
Transformers to transform the elements into keys and values.
K - the key type
V - the value type
E - the type of object contained in the
Iterable
map - the
Map to populate.
elements - the
Iterable containing the input values for the map.
keyTransformer - the
Transformer used to transform the element into a key value
valueTransformer - the
Transformer used to transform the element into a value
NullPointerException - if the map, elements or transformers are null
public static <K,V> void populateMap(MultiMap <K ,V> map, Iterable <? extends V> elements, Transformer <V ,K> keyTransformer)
Transformer to transform the elements into keys, using the unaltered element as the value in the
MultiMap.
K - the key type
V - the value type
map - the
MultiMap to populate.
elements - the
Iterable to use as input values for the map.
keyTransformer - the
Transformer used to transform the element into a key value
NullPointerException - if the map, elements or transformer are null
public static <K,V ,E> void populateMap(MultiMap <K ,V> map, Iterable <? extends E> elements, Transformer <E ,K> keyTransformer, Transformer <E ,V> valueTransformer)
Transformers to transform the elements into keys and values.
K - the key type
V - the value type
E - the type of object contained in the
Iterable
map - the
MultiMap to populate.
elements - the
Iterable containing the input values for the map.
keyTransformer - the
Transformer used to transform the element into a key value
valueTransformer - the
Transformer used to transform the element into a value
NullPointerException - if the map, collection or transformers are null
public static <K,V> IterableMap <K ,V> iterableMap(Map <K ,V> map)
Map as an
IterableMap.
K - the key type
V - the value type
map - to wrap if necessary.
NullPointerException - if map is null
public static <K,V> IterableSortedMap <K ,V> iterableSortedMap(SortedMap <K ,V> sortedMap)
SortedMap as an
IterableSortedMap.
K - the key type
V - the value type
sortedMap - to wrap if necessary
IterableSortedMap
NullPointerException - if sortedMap is null