| java.lang.Object org.apache.commons.collections.map.MultiKeyMap
MultiKeyMap | public class MultiKeyMap implements IterableMap,Serializable(Code) | | A Map implementation that uses multiple keys to map the value.
This class is the most efficient way to uses multiple keys to map to a value.
The best way to use this class is via the additional map-style methods.
These provide get , containsKey , put and
remove for individual keys which operate without extra object creation.
The additional methods are the main interface of this map.
As such, you will not normally hold this map in a variable of type Map .
The normal map methods take in and return a
MultiKey .
If you try to use put() with any other object type a
ClassCastException is thrown. If you try to use null as
the key in put() a NullPointerException is thrown.
This map is implemented as a decorator of a AbstractHashedMap which
enables extra behaviour to be added easily.
MultiKeyMap.decorate(new LinkedMap()) creates an ordered map.
MultiKeyMap.decorate(new LRUMap()) creates an least recently used map.
MultiKeyMap.decorate(new ReferenceMap()) creates a garbage collector sensitive map.
Note that IdentityMap and ReferenceIdentityMap are unsuitable
for use as the key comparison would work on the whole MultiKey, not the elements within.
As an example, consider a least recently used cache that uses a String airline code
and a Locale to lookup the airline's name:
private MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap(50));
public String getAirlineName(String code, String locale) {
String name = (String) cache.get(code, locale);
if (name == null) {
name = getAirlineNameFromDB(code, locale);
cache.put(code, locale, name);
}
return name;
}
Note that MultiKeyMap is not synchronized and is not thread-safe.
If you wish to use this map from multiple threads concurrently, you must use
appropriate synchronization. This class may throw exceptions when accessed
by concurrent threads without synchronization.
since: Commons Collections 3.1 version: $Revision: 348007 $ $Date: 2005-11-21 22:52:57 +0000 (Mon, 21 Nov 2005) $ author: Stephen Colebourne |
Method Summary | |
protected void | checkKey(Object key) Check to ensure that input keys are valid MultiKey objects. | public void | clear() | public Object | clone() Clones the map without cloning the keys or values. | public boolean | containsKey(Object key1, Object key2) Checks whether the map contains the specified multi-key. | public boolean | containsKey(Object key1, Object key2, Object key3) Checks whether the map contains the specified multi-key. | public boolean | containsKey(Object key1, Object key2, Object key3, Object key4) Checks whether the map contains the specified multi-key. | public boolean | containsKey(Object key1, Object key2, Object key3, Object key4, Object key5) Checks whether the map contains the specified multi-key. | public boolean | containsKey(Object key) | public boolean | containsValue(Object value) | public static MultiKeyMap | decorate(AbstractHashedMap map) Decorates the specified map to add the MultiKeyMap API and fast query. | public Set | entrySet() | public boolean | equals(Object obj) | public Object | get(Object key1, Object key2) Gets the value mapped to the specified multi-key. | public Object | get(Object key1, Object key2, Object key3) Gets the value mapped to the specified multi-key. | public Object | get(Object key1, Object key2, Object key3, Object key4) Gets the value mapped to the specified multi-key. | public Object | get(Object key1, Object key2, Object key3, Object key4, Object key5) Gets the value mapped to the specified multi-key. | public Object | get(Object key) | protected int | hash(Object key1, Object key2) Gets the hash code for the specified multi-key. | protected int | hash(Object key1, Object key2, Object key3) Gets the hash code for the specified multi-key. | protected int | hash(Object key1, Object key2, Object key3, Object key4) Gets the hash code for the specified multi-key. | protected int | hash(Object key1, Object key2, Object key3, Object key4, Object key5) Gets the hash code for the specified multi-key. | public int | hashCode() | public boolean | isEmpty() | protected boolean | isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2) Is the key equal to the combined key. | protected boolean | isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3) Is the key equal to the combined key. | protected boolean | isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4) Is the key equal to the combined key. | protected boolean | isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4, Object key5) Is the key equal to the combined key. | public Set | keySet() | public MapIterator | mapIterator() | public Object | put(Object key1, Object key2, Object value) Stores the value against the specified multi-key. | public Object | put(Object key1, Object key2, Object key3, Object value) Stores the value against the specified multi-key. | public Object | put(Object key1, Object key2, Object key3, Object key4, Object value) Stores the value against the specified multi-key. | public Object | put(Object key1, Object key2, Object key3, Object key4, Object key5, Object value) Stores the value against the specified multi-key. | public Object | put(Object key, Object value) Puts the key and value into the map, where the key must be a non-null
MultiKey object. | public void | putAll(Map mapToCopy) Copies all of the keys and values from the specified map to this map. | public Object | remove(Object key1, Object key2) Removes the specified multi-key from this map. | public Object | remove(Object key1, Object key2, Object key3) Removes the specified multi-key from this map. | public Object | remove(Object key1, Object key2, Object key3, Object key4) Removes the specified multi-key from this map. | public Object | remove(Object key1, Object key2, Object key3, Object key4, Object key5) Removes the specified multi-key from this map. | public Object | remove(Object key) | public boolean | removeAll(Object key1) Removes all mappings where the first key is that specified. | public boolean | removeAll(Object key1, Object key2) Removes all mappings where the first two keys are those specified. | public boolean | removeAll(Object key1, Object key2, Object key3) Removes all mappings where the first three keys are those specified. | public boolean | removeAll(Object key1, Object key2, Object key3, Object key4) Removes all mappings where the first four keys are those specified. | public int | size() | public String | toString() | public Collection | values() |
MultiKeyMap | public MultiKeyMap()(Code) | | Constructs a new MultiKeyMap that decorates a HashedMap .
|
MultiKeyMap | protected MultiKeyMap(AbstractHashedMap map)(Code) | | Constructor that decorates the specified map and is called from
MultiKeyMap.decorate(AbstractHashedMap) .
The map must not be null and should be empty or only contain valid keys.
This constructor performs no validation.
Parameters: map - the map to decorate |
checkKey | protected void checkKey(Object key)(Code) | | Check to ensure that input keys are valid MultiKey objects.
Parameters: key - the key to check |
clear | public void clear()(Code) | | |
clone | public Object clone()(Code) | | Clones the map without cloning the keys or values.
a shallow clone |
containsKey | public boolean containsKey(Object key1, Object key2)(Code) | | Checks whether the map contains the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key true if the map contains the key |
containsKey | public boolean containsKey(Object key1, Object key2, Object key3)(Code) | | Checks whether the map contains the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key true if the map contains the key |
containsKey | public boolean containsKey(Object key1, Object key2, Object key3, Object key4)(Code) | | Checks whether the map contains the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key true if the map contains the key |
containsKey | public boolean containsKey(Object key1, Object key2, Object key3, Object key4, Object key5)(Code) | | Checks whether the map contains the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key true if the map contains the key |
containsValue | public boolean containsValue(Object value)(Code) | | |
decorate | public static MultiKeyMap decorate(AbstractHashedMap map)(Code) | | Decorates the specified map to add the MultiKeyMap API and fast query.
The map must not be null and must be empty.
Parameters: map - the map to decorate, not null throws: IllegalArgumentException - if the map is null or not empty |
get | public Object get(Object key1, Object key2)(Code) | | Gets the value mapped to the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key the mapped value, null if no match |
get | public Object get(Object key1, Object key2, Object key3)(Code) | | Gets the value mapped to the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key the mapped value, null if no match |
get | public Object get(Object key1, Object key2, Object key3, Object key4)(Code) | | Gets the value mapped to the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key the mapped value, null if no match |
get | public Object get(Object key1, Object key2, Object key3, Object key4, Object key5)(Code) | | Gets the value mapped to the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key the mapped value, null if no match |
hash | protected int hash(Object key1, Object key2)(Code) | | Gets the hash code for the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key the hash code |
hash | protected int hash(Object key1, Object key2, Object key3)(Code) | | Gets the hash code for the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key the hash code |
hash | protected int hash(Object key1, Object key2, Object key3, Object key4)(Code) | | Gets the hash code for the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key the hash code |
hash | protected int hash(Object key1, Object key2, Object key3, Object key4, Object key5)(Code) | | Gets the hash code for the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key the hash code |
hashCode | public int hashCode()(Code) | | |
isEmpty | public boolean isEmpty()(Code) | | |
isEqualKey | protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2)(Code) | | Is the key equal to the combined key.
Parameters: entry - the entry to compare to Parameters: key1 - the first key Parameters: key2 - the second key true if the key matches |
isEqualKey | protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3)(Code) | | Is the key equal to the combined key.
Parameters: entry - the entry to compare to Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key true if the key matches |
isEqualKey | protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4)(Code) | | Is the key equal to the combined key.
Parameters: entry - the entry to compare to Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key true if the key matches |
isEqualKey | protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4, Object key5)(Code) | | Is the key equal to the combined key.
Parameters: entry - the entry to compare to Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key true if the key matches |
put | public Object put(Object key1, Object key2, Object value)(Code) | | Stores the value against the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: value - the value to store the value previously mapped to this combined key, null if none |
put | public Object put(Object key1, Object key2, Object key3, Object value)(Code) | | Stores the value against the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: value - the value to store the value previously mapped to this combined key, null if none |
put | public Object put(Object key1, Object key2, Object key3, Object key4, Object value)(Code) | | Stores the value against the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: value - the value to store the value previously mapped to this combined key, null if none |
put | public Object put(Object key1, Object key2, Object key3, Object key4, Object key5, Object value)(Code) | | Stores the value against the specified multi-key.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key Parameters: value - the value to store the value previously mapped to this combined key, null if none |
put | public Object put(Object key, Object value)(Code) | | Puts the key and value into the map, where the key must be a non-null
MultiKey object.
Parameters: key - the non-null MultiKey object Parameters: value - the value to store the previous value for the key throws: NullPointerException - if the key is null throws: ClassCastException - if the key is not a MultiKey |
putAll | public void putAll(Map mapToCopy)(Code) | | Copies all of the keys and values from the specified map to this map.
Each key must be non-null and a MultiKey object.
Parameters: mapToCopy - to this map throws: NullPointerException - if the mapToCopy or any key within is null throws: ClassCastException - if any key in mapToCopy is not a MultiKey |
remove | public Object remove(Object key1, Object key2)(Code) | | Removes the specified multi-key from this map.
Parameters: key1 - the first key Parameters: key2 - the second key the value mapped to the removed key, null if key not in map |
remove | public Object remove(Object key1, Object key2, Object key3)(Code) | | Removes the specified multi-key from this map.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key the value mapped to the removed key, null if key not in map |
remove | public Object remove(Object key1, Object key2, Object key3, Object key4)(Code) | | Removes the specified multi-key from this map.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key the value mapped to the removed key, null if key not in map |
remove | public Object remove(Object key1, Object key2, Object key3, Object key4, Object key5)(Code) | | Removes the specified multi-key from this map.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key Parameters: key5 - the fifth key the value mapped to the removed key, null if key not in map |
removeAll | public boolean removeAll(Object key1)(Code) | | Removes all mappings where the first key is that specified.
This method removes all the mappings where the MultiKey
has one or more keys, and the first matches that specified.
Parameters: key1 - the first key true if any elements were removed |
removeAll | public boolean removeAll(Object key1, Object key2)(Code) | | Removes all mappings where the first two keys are those specified.
This method removes all the mappings where the MultiKey
has two or more keys, and the first two match those specified.
Parameters: key1 - the first key Parameters: key2 - the second key true if any elements were removed |
removeAll | public boolean removeAll(Object key1, Object key2, Object key3)(Code) | | Removes all mappings where the first three keys are those specified.
This method removes all the mappings where the MultiKey
has three or more keys, and the first three match those specified.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key true if any elements were removed |
removeAll | public boolean removeAll(Object key1, Object key2, Object key3, Object key4)(Code) | | Removes all mappings where the first four keys are those specified.
This method removes all the mappings where the MultiKey
has four or more keys, and the first four match those specified.
Parameters: key1 - the first key Parameters: key2 - the second key Parameters: key3 - the third key Parameters: key4 - the fourth key true if any elements were removed |
|
|