java.lang.Object | |
↳ | org.apache.commons.collections.map.MultiKeyMap |
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.
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.
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
map | The decorated map |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new MultiKeyMap that decorates a
HashedMap . |
Protected Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructor that decorates the specified map and is called from
decorate(AbstractHashedMap) . |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Clones the map without cloning the keys or values.
| |||||||||||
Checks whether the map contains the specified multi-key.
| |||||||||||
Checks whether the map contains the specified multi-key.
| |||||||||||
Checks whether the map contains the specified multi-key.
| |||||||||||
Checks whether the map contains the specified multi-key.
| |||||||||||
Decorates the specified map to add the MultiKeyMap API and fast query.
| |||||||||||
Gets the value mapped to the specified multi-key.
| |||||||||||
Gets the value mapped to the specified multi-key.
| |||||||||||
Gets the value mapped to the specified multi-key.
| |||||||||||
Gets the value mapped to the specified multi-key.
| |||||||||||
Obtains a
MapIterator over the map. | |||||||||||
Stores the value against the specified multi-key.
| |||||||||||
Stores the value against the specified multi-key.
| |||||||||||
Stores the value against the specified multi-key.
| |||||||||||
Stores the value against the specified multi-key.
| |||||||||||
Puts the key and value into the map, where the key must be a non-null
MultiKey object.
| |||||||||||
Copies all of the keys and values from the specified map to this map.
| |||||||||||
Removes the specified multi-key from this map.
| |||||||||||
Removes the specified multi-key from this map.
| |||||||||||
Removes the specified multi-key from this map.
| |||||||||||
Removes the specified multi-key from this map.
| |||||||||||
Removes all mappings where the first four keys are those specified.
| |||||||||||
Removes all mappings where the first two keys are those specified.
| |||||||||||
Removes all mappings where the first key is that specified.
| |||||||||||
Removes all mappings where the first three keys are those specified.
| |||||||||||
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Check to ensure that input keys are valid MultiKey objects.
| |||||||||||
Gets the hash code for the specified multi-key.
| |||||||||||
Gets the hash code for the specified multi-key.
| |||||||||||
Gets the hash code for the specified multi-key.
| |||||||||||
Gets the hash code for the specified multi-key.
| |||||||||||
Is the key equal to the combined key.
| |||||||||||
Is the key equal to the combined key.
| |||||||||||
Is the key equal to the combined key.
| |||||||||||
Is the key equal to the combined key.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
java.util.Map
| |||||||||||
From interface
org.apache.commons.collections.IterableMap
|
Constructs a new MultiKeyMap that decorates a HashedMap
.
Constructor that decorates the specified map and is called from
decorate(AbstractHashedMap)
.
The map must not be null and should be empty or only contain valid keys.
This constructor performs no validation.
map | the map to decorate |
---|
Checks whether the map contains the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
Checks whether the map contains the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
Checks whether the map contains the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
Checks whether the map contains the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
Decorates the specified map to add the MultiKeyMap API and fast query. The map must not be null and must be empty.
map | the map to decorate, not null |
---|
IllegalArgumentException | if the map is null or not empty |
---|
Gets the value mapped to the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
Gets the value mapped to the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
Gets the value mapped to the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
Gets the value mapped to the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
Obtains a MapIterator
over the map.
A map iterator is an efficient way of iterating over maps. There is no need to access the entry set or cast to Map Entry objects.
IterableMap map = new HashedMap(); MapIterator it = map.mapIterator(); while (it.hasNext()) { Object key = it.next(); Object value = it.getValue(); it.setValue("newValue"); }
Stores the value against the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
value | the value to store |
Stores the value against the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
value | the value to store |
Stores the value against the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
value | the value to store |
Stores the value against the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
value | the value to store |
Puts the key and value into the map, where the key must be a non-null MultiKey object.
key | the non-null MultiKey object |
---|---|
value | the value to store |
NullPointerException | if the key is null |
---|---|
ClassCastException | if the key is not a MultiKey |
Copies all of the keys and values from the specified map to this map. Each key must be non-null and a MultiKey object.
mapToCopy | to this map |
---|
NullPointerException | if the mapToCopy or any key within is null |
---|---|
ClassCastException | if any key in mapToCopy is not a MultiKey |
Removes the specified multi-key from this map.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
Removes the specified multi-key from this map.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
Removes the specified multi-key from this map.
key1 | the first key |
---|---|
key2 | the second key |
Removes the specified multi-key from this map.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
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.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
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.
key1 | the first key |
---|---|
key2 | the second key |
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.
key1 | the first key |
---|
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.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
Check to ensure that input keys are valid MultiKey objects.
key | the key to check |
---|
Gets the hash code for the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
Gets the hash code for the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
Gets the hash code for the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
key3 | the third key |
Gets the hash code for the specified multi-key.
key1 | the first key |
---|---|
key2 | the second key |
Is the key equal to the combined key.
entry | the entry to compare to |
---|---|
key1 | the first key |
key2 | the second key |
key3 | the third key |
Is the key equal to the combined key.
entry | the entry to compare to |
---|---|
key1 | the first key |
key2 | the second key |
Is the key equal to the combined key.
entry | the entry to compare to |
---|---|
key1 | the first key |
key2 | the second key |
key3 | the third key |
key4 | the fourth key |
key5 | the fifth key |
Is the key equal to the combined key.
entry | the entry to compare to |
---|---|
key1 | the first key |
key2 | the second key |
key3 | the third key |
key4 | the fourth key |