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 {@link 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; }@since Commons Collections 3.1 @version $Revision: 1.3 $ $Date: 2004/06/07 21:00:58 $ @author Stephen Colebourne
|
|
|
|
|
|