Class MultiKey
- All Implemented Interfaces:
Serializable
MultiKey
allows multiple map keys to be merged together.
The purpose of this class is to avoid the need to write code to handle maps of maps. An example might be the need to lookup a filename by key and locale. The typical solution might be nested maps. This class can be used instead by creating an instance passing in the key and locale.
Example usage:
// populate map with data mapping key+locale to localizedText Map map = new HashMap(); MultiKey multiKey = new MultiKey(key, locale); map.put(multiKey, localizedText); // later retireve the localized text MultiKey multiKey = new MultiKey(key, locale); String localizedText = (String) map.get(multiKey);
- Since:
- Commons Collections 3.0
- Version:
- $Revision: 1.1 $ $Date: 2009-12-19 21:38:26 $
- See Also:
-
Constructor Summary
ConstructorDescriptionConstructor taking an array of keys which is cloned.Constructor taking an array of keys, optionally choosing whether to clone.Constructor taking two keys.Constructor taking three keys.Constructor taking four keys.Constructor taking five keys. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Compares this object to another.getKey
(int index) Gets the key at the specified index.Object[]
getKeys()
Gets a clone of the array of keys.int
hashCode()
Gets the combined hash code that is computed from all the keys.int
size()
Gets the size of the list of keys.toString()
Gets a debugging string version of the key.
-
Constructor Details
-
MultiKey
Constructor taking two keys.The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
- Parameters:
key1
- the first keykey2
- the second key
-
MultiKey
Constructor taking three keys.The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
- Parameters:
key1
- the first keykey2
- the second keykey3
- the third key
-
MultiKey
Constructor taking four keys.The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
- Parameters:
key1
- the first keykey2
- the second keykey3
- the third keykey4
- the fourth key
-
MultiKey
Constructor taking five keys.The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
- Parameters:
key1
- the first keykey2
- the second keykey3
- the third keykey4
- the fourth keykey5
- the fifth key
-
MultiKey
Constructor taking an array of keys which is cloned.The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
This is equivalent to
new MultiKey(keys, true)
.- Parameters:
keys
- the array of keys, not null- Throws:
IllegalArgumentException
- if the key array is null
-
MultiKey
Constructor taking an array of keys, optionally choosing whether to clone.If the array is not cloned, then it must not be modified.
This method is public for performance reasons only, to avoid a clone. The hashcode is calculated once here in this method. Therefore, changing the array passed in would not change the hashcode but would change the equals method, which is a bug.
This is the only fully safe usage of this constructor, as the object array is never made available in a variable:
new MultiKey(new Object[] {...}, false);
The keys should be immutable If they are not then they must not be changed after adding to the MultiKey.
- Parameters:
keys
- the array of keys, not nullmakeClone
- true to clone the array, false to assign it- Throws:
IllegalArgumentException
- if the key array is null- Since:
- Commons Collections 3.1
-
-
Method Details
-
getKeys
Gets a clone of the array of keys.The keys should be immutable If they are not then they must not be changed.
- Returns:
- the individual keys
-
getKey
Gets the key at the specified index.The key should be immutable. If it is not then it must not be changed.
- Parameters:
index
- the index to retrieve- Returns:
- the key at the index
- Throws:
IndexOutOfBoundsException
- if the index is invalid- Since:
- Commons Collections 3.1
-
size
public int size()Gets the size of the list of keys.- Returns:
- the size of the list of keys
- Since:
- Commons Collections 3.1
-
equals
Compares this object to another.To be equal, the other object must be a
MultiKey
with the same number of keys which are also equal. -
hashCode
public int hashCode()Gets the combined hash code that is computed from all the keys.This value is computed once and then cached, so elements should not change their hash codes once created (note that this is the same constraint that would be used if the individual keys elements were themselves
Map
keys. -
toString
Gets a debugging string version of the key.
-