org.apache.commons.collections.map
Class CaseInsensitiveMap<V>

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by org.apache.commons.collections.map.AbstractHashedMap<String,V>
          extended by org.apache.commons.collections.map.CaseInsensitiveMap<V>
All Implemented Interfaces:
Serializable, Cloneable, Map<String,V>, IterableMap<String,V>

public class CaseInsensitiveMap<V>
extends AbstractHashedMap<String,V>
implements Serializable, Cloneable

A case-insensitive Map.

As entries are added to the map, keys are converted to all lowercase. A new key is compared to existing keys by comparing newKey.toLower() to the lowercase values in the current KeySet.

Null keys are supported.

The keySet() method returns all lowercase keys, or nulls.

Example:


  Map map = new CaseInsensitiveMap();
  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}.

Since:
Commons Collections 3.0
Version:
$Revision: 1.1.1.1 $ $Date: 2005/05/23 04:35:45 $
Author:
Matt Hall, John Watkinson, Commons-Collections team
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.commons.collections.map.AbstractHashedMap
AbstractHashedMap.EntrySet<K,V>, AbstractHashedMap.EntrySetIterator<K,V>, AbstractHashedMap.HashEntry<K,V>, AbstractHashedMap.HashIterator<K,V>, AbstractHashedMap.HashMapIterator<K,V>, AbstractHashedMap.KeySet<K,V>, AbstractHashedMap.KeySetIterator<K,V>, AbstractHashedMap.Values<K,V>, AbstractHashedMap.ValuesIterator<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Field Summary
 
Fields inherited from class org.apache.commons.collections.map.AbstractHashedMap
data, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD, entrySet, GETKEY_INVALID, GETVALUE_INVALID, keySet, loadFactor, MAXIMUM_CAPACITY, modCount, NO_NEXT_ENTRY, NO_PREVIOUS_ENTRY, NULL, REMOVE_INVALID, SETVALUE_INVALID, size, threshold, values
 
Constructor Summary
CaseInsensitiveMap()
          Constructs a new empty map with default size and load factor.
CaseInsensitiveMap(int initialCapacity)
          Constructs a new, empty map with the specified initial capacity.
CaseInsensitiveMap(int initialCapacity, float loadFactor)
          Constructs a new, empty map with the specified initial capacity and load factor.
CaseInsensitiveMap(Map<? extends String,? extends V> map)
          Constructor copying elements from another map.
 
Method Summary
 Object clone()
          Clones the map without cloning the keys or values.
protected  String convertKey(String key)
          Converts keys to lower case.
 V get(Object key)
          Gets the value mapped to the key specified.
 V put(String s, V v)
          Puts a key-value mapping into this map.
 void putAll(Map<? extends String,? extends V> map)
          Puts all the values from the specified map into this map.
 
Methods inherited from class org.apache.commons.collections.map.AbstractHashedMap
addEntry, addMapping, calculateNewCapacity, calculateThreshold, checkCapacity, clear, containsKey, containsValue, createEntry, createEntrySetIterator, createKeySetIterator, createValuesIterator, destroyEntry, doReadObject, doWriteObject, ensureCapacity, entryHashCode, entryKey, entryNext, entrySet, entryValue, equals, getEntry, hash, hashCode, hashIndex, init, isEmpty, isEqualKey, isEqualValue, keySet, mapIterator, remove, removeEntry, removeMapping, reuseEntry, size, toString, updateEntry, values
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CaseInsensitiveMap

public CaseInsensitiveMap()
Constructs a new empty map with default size and load factor.


CaseInsensitiveMap

public CaseInsensitiveMap(int initialCapacity)
Constructs a new, empty map with the specified initial capacity.

Parameters:
initialCapacity - the initial capacity
Throws:
IllegalArgumentException - if the initial capacity is less than one

CaseInsensitiveMap

public CaseInsensitiveMap(int initialCapacity,
                          float loadFactor)
Constructs a new, empty map with the specified initial capacity and load factor.

Parameters:
initialCapacity - the initial capacity
loadFactor - the load factor
Throws:
IllegalArgumentException - if the initial capacity is less than one
IllegalArgumentException - if the load factor is less than zero

CaseInsensitiveMap

public CaseInsensitiveMap(Map<? extends String,? extends V> map)
Constructor copying elements from another map.

Keys will be converted to lower case strings, which may cause some entries to be removed (if string representation of keys differ only by character case).

Parameters:
map - the map to copy
Throws:
NullPointerException - if the map is null
Method Detail

convertKey

protected String convertKey(String key)
Converts keys to lower case.

Returns null if key is null.

Parameters:
key - the key convert
Returns:
the converted key

get

public V get(Object key)
Description copied from class: AbstractHashedMap
Gets the value mapped to the key specified.

Specified by:
get in interface Map<String,V>
Overrides:
get in class AbstractHashedMap<String,V>
Parameters:
key - the key
Returns:
the mapped value, null if no match

put

public V put(String s,
             V v)
Description copied from class: AbstractHashedMap
Puts a key-value mapping into this map.

Specified by:
put in interface Map<String,V>
Overrides:
put in class AbstractHashedMap<String,V>
Parameters:
s - the key to add
v - the value to add
Returns:
the value previously mapped to this key, null if none

putAll

public void putAll(Map<? extends String,? extends V> map)
Description copied from class: AbstractHashedMap
Puts all the values from the specified map into this map.

This implementation iterates around the specified map and uses AbstractHashedMap.put(Object, Object).

Specified by:
putAll in interface Map<String,V>
Overrides:
putAll in class AbstractHashedMap<String,V>
Parameters:
map - the map to add

clone

public Object clone()
Clones the map without cloning the keys or values.

Overrides:
clone in class AbstractHashedMap<String,V>
Returns:
a shallow clone


Copyright © 2005-2005 Apache Software Foundation, Matt Hall, John Watkinson. All Rights Reserved.