public class LinkedCaseInsensitiveMap<V>
extends java.lang.Object
implements java.util.Map<java.lang.String,V>, java.io.Serializable, java.lang.Cloneable
LinkedHashMap variant that stores String keys in a case-insensitive
manner, for example for key-based access in a results table.
Preserves the original order as well as the original casing of keys, while allowing for contains, get and remove calls with any case of key.
Does not support null keys.
| Modifier and Type | Field and Description |
|---|---|
private java.util.HashMap<java.lang.String,java.lang.String> |
caseInsensitiveKeys |
private java.util.Locale |
locale |
private java.util.LinkedHashMap<java.lang.String,V> |
targetMap |
| Modifier | Constructor and Description |
|---|---|
|
LinkedCaseInsensitiveMap()
Create a new LinkedCaseInsensitiveMap for the default Locale.
|
|
LinkedCaseInsensitiveMap(int initialCapacity)
Create a new LinkedCaseInsensitiveMap that wraps a
LinkedHashMap
with the given initial capacity and stores lower-case keys according
to the default Locale. |
|
LinkedCaseInsensitiveMap(int initialCapacity,
java.util.Locale locale)
Create a new LinkedCaseInsensitiveMap that wraps a
LinkedHashMap
with the given initial capacity and stores lower-case keys according
to the given Locale. |
private |
LinkedCaseInsensitiveMap(LinkedCaseInsensitiveMap<V> other)
Copy constructor.
|
|
LinkedCaseInsensitiveMap(java.util.Locale locale)
Create a new LinkedCaseInsensitiveMap that stores lower-case keys
according to the given Locale.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
LinkedCaseInsensitiveMap<V> |
clone() |
boolean |
containsKey(java.lang.Object key) |
boolean |
containsValue(java.lang.Object value) |
protected java.lang.String |
convertKey(java.lang.String key)
Convert the given key to a case-insensitive key.
|
java.util.Set<java.util.Map.Entry<java.lang.String,V>> |
entrySet() |
boolean |
equals(java.lang.Object obj) |
V |
get(java.lang.Object key) |
V |
getOrDefault(java.lang.Object key,
V defaultValue) |
int |
hashCode() |
boolean |
isEmpty() |
java.util.Set<java.lang.String> |
keySet() |
V |
put(java.lang.String key,
V value) |
void |
putAll(java.util.Map<? extends java.lang.String,? extends V> map) |
V |
remove(java.lang.Object key) |
protected boolean |
removeEldestEntry(java.util.Map.Entry<java.lang.String,V> eldest)
Determine whether this map should remove the given eldest entry.
|
int |
size() |
java.lang.String |
toString() |
java.util.Collection<V> |
values() |
private final java.util.LinkedHashMap<java.lang.String,V> targetMap
private final java.util.HashMap<java.lang.String,java.lang.String> caseInsensitiveKeys
private final java.util.Locale locale
public LinkedCaseInsensitiveMap()
String.toLowerCase()public LinkedCaseInsensitiveMap(java.util.Locale locale)
locale - the Locale to use for lower-case conversionString.toLowerCase(java.util.Locale)public LinkedCaseInsensitiveMap(int initialCapacity)
LinkedHashMap
with the given initial capacity and stores lower-case keys according
to the default Locale.initialCapacity - the initial capacityString.toLowerCase()public LinkedCaseInsensitiveMap(int initialCapacity,
java.util.Locale locale)
LinkedHashMap
with the given initial capacity and stores lower-case keys according
to the given Locale.initialCapacity - the initial capacitylocale - the Locale to use for lower-case conversionString.toLowerCase(java.util.Locale)private LinkedCaseInsensitiveMap(LinkedCaseInsensitiveMap<V> other)
public int size()
size in interface java.util.Map<java.lang.String,V>public boolean isEmpty()
isEmpty in interface java.util.Map<java.lang.String,V>public boolean containsKey(java.lang.Object key)
containsKey in interface java.util.Map<java.lang.String,V>public boolean containsValue(java.lang.Object value)
containsValue in interface java.util.Map<java.lang.String,V>public V get(java.lang.Object key)
get in interface java.util.Map<java.lang.String,V>public V getOrDefault(java.lang.Object key, V defaultValue)
getOrDefault in interface java.util.Map<java.lang.String,V>public V put(java.lang.String key, V value)
put in interface java.util.Map<java.lang.String,V>public void putAll(java.util.Map<? extends java.lang.String,? extends V> map)
putAll in interface java.util.Map<java.lang.String,V>public V remove(java.lang.Object key)
remove in interface java.util.Map<java.lang.String,V>public void clear()
clear in interface java.util.Map<java.lang.String,V>public java.util.Set<java.lang.String> keySet()
keySet in interface java.util.Map<java.lang.String,V>public java.util.Collection<V> values()
values in interface java.util.Map<java.lang.String,V>public java.util.Set<java.util.Map.Entry<java.lang.String,V>> entrySet()
entrySet in interface java.util.Map<java.lang.String,V>public LinkedCaseInsensitiveMap<V> clone()
clone in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
equals in interface java.util.Map<java.lang.String,V>equals in class java.lang.Objectpublic int hashCode()
hashCode in interface java.util.Map<java.lang.String,V>hashCode in class java.lang.Objectpublic java.lang.String toString()
toString in class java.lang.Objectprotected java.lang.String convertKey(java.lang.String key)
The default implementation converts the key to lower-case according to this Map's Locale.
key - the user-specified keyString.toLowerCase(java.util.Locale)protected boolean removeEldestEntry(java.util.Map.Entry<java.lang.String,V> eldest)
eldest - the candidate entrytrue for removing it, false for keeping itLinkedHashMap.removeEldestEntry(java.util.Map.Entry<K, V>)