Class KeyInValueMap<K,​V>

  • Type Parameters:
    K - key type
    V - 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 Detail

      • KeyInValueMap

        public KeyInValueMap​(int initialCapacity,
                             float loadFactor)
        Create a new map.
        Parameters:
        initialCapacity - initial storage capacity
        loadFactor - load factor at which to increase the internal storage capacity
    • 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 with computeValue(Object) which must be implemented by subclasses.
        Parameters:
        key - key
        computeIfAbsent - If a value is not found and this is set to true, then compute and add a new value using computeValue(Object).
        Returns:
        The value for the key. If computeIfAbsent is false and no matching value exists, then null is 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 by get(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
      • getKey

        protected abstract K getKey​(V value)
        Get the key for a value.
        Parameters:
        value - value to get key for
        Returns:
        key for value