Class KeyInValueMap<K,V>
- java.lang.Object
-
- org.openjdk.jmc.common.collection.KeyInValueMap<K,V>
-
- Type Parameters:
K- key typeV- value type
- All Implemented Interfaces:
Iterable<V>
- Direct Known Subclasses:
EntryHashMap
public abstract class KeyInValueMap<K,V> extends Object implements Iterable<V>
A map for values that has the key inside the value, so only storing the value directly without a wrapping map entry is sufficient. It can also compute absent values which is not available in Java 7 maps.Does not support null keys or values. Not thread safe.
-
-
Constructor Summary
Constructors Constructor Description KeyInValueMap(int initialCapacity, float loadFactor)Create a new map.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract VcomputeValue(K key)This method must be overridden in subclasses so that values can be computed for missing keys.Vget(K key, boolean computeIfAbsent)Get the value for a key and optionally compute a new value if it is not already present in the map.protected abstract KgetKey(V value)Get the key for a value.protected inthashKey(K key)Calculate the hash for a key.Iterator<V>iterator()intsize()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
get
public V get(K key, boolean computeIfAbsent)
Get the value for a key and optionally compute a new value if it is not already present in the map. Automatic value computation is done withcomputeValue(Object)which must be implemented by subclasses.- Parameters:
key- keycomputeIfAbsent- If a value is not found and this is set totrue, then compute and add a new value usingcomputeValue(Object).- Returns:
- The value for the key. If computeIfAbsent is
falseand no matching value exists, thennullis returned.
-
size
public int size()
-
computeValue
protected abstract V computeValue(K key)
This method must be overridden in subclasses so that values can be computed for missing keys. Called byget(Object, boolean)when the requested key is missing in the map.- Parameters:
key- key to calculate value for- Returns:
- calculated value
-
hashKey
protected int hashKey(K key)
Calculate the hash for a key. May be overridden by subclasses.- Parameters:
key- key to calculate hash for- Returns:
- hash for key
-
-