A case-insensitive
Map
.
Before keys are added to the map or compared to other existing keys, they are converted to all lowercase in a locale-independent fashion by using information from the Unicode data file.
Null keys are supported.
The keySet()
method returns all lowercase keys, or nulls.
Example:
Map<String, String> map = new CaseInsensitiveMap<String, String>(); map.put("One", "One"); map.put("Two", "Two"); map.put(null, "Three"); map.put("one", "Four");
creates a
CaseInsensitiveMap
with three entries.
map.get(null)
returns
"Three"
and
map.get("ONE")
returns
"Four".
The
Set
returned by
keySet()
equals
{"one", "two", null}.
This map will violate the detail of various Map and map view contracts. As a general rule, don't compare this map to other maps. In particular, you can't use decorators like {@link ListOrderedMap} on it, which silently assume that thesecontracts are fulfilled. Note that CaseInsensitiveMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw exceptions when accessed by concurrent threads without synchronization.
@since 3.0
@version $Id: CaseInsensitiveMap.java 1477799 2013-04-30 19:56:11Z tn $