Class OpenHashMap<K,​V>

  • All Implemented Interfaces:
    Map<K,​V>

    public class OpenHashMap<K,​V>
    extends AbstractKeyBasedMap<K,​V>
    An implementation of Map that is optimized for memory footprint. Specifically, instead of instantiating an "Entry" object for each element (as the HashMap does, which references those entries in a linked list fashion with the head of the linked list stored in the hash bucket array, this implementation stores its elements using an open hashing algorithm, i.e. the keys are stored directly in the hash bucket array and the values are stored in a corresponding values array.

    This implementation is explicitly NOT thread-safe.

    Since:
    12.2.1
    Author:
    cp 2013.01.30
    • Constructor Detail

      • OpenHashMap

        public OpenHashMap()
        Default constructor.
      • OpenHashMap

        public OpenHashMap​(int initialCapacity)
        Create a OpenHashMap pre-sized to hold the specified number of entries.
        Parameters:
        initialCapacity - the initial capacity requirement for the hash map
      • OpenHashMap

        public OpenHashMap​(Map map)
        Create a OpenHashMap that will initially contain the contents of the passed Map. In other words, this is a "copy constructor".
        Parameters:
        map - the Collection whose contents this
    • Method Detail

      • size

        public int size()
        Returns the number of key-value mappings in this map.
        Specified by:
        size in interface Map<K,​V>
        Overrides:
        size in class AbstractKeyBasedMap<K,​V>
        Returns:
        the number of key-value mappings in this map
      • containsKey

        public boolean containsKey​(Object oKey)
        Returns true if this map contains a mapping for the specified key.
        Specified by:
        containsKey in interface Map<K,​V>
        Overrides:
        containsKey in class AbstractKeyBasedMap<K,​V>
        Returns:
        true if this map contains a mapping for the specified key, false otherwise.
      • get

        public V get​(Object oKey)
        Returns the value to which this map maps the specified key.
        Specified by:
        get in interface Map<K,​V>
        Specified by:
        get in class AbstractKeyBasedMap<K,​V>
        Parameters:
        oKey - the key object
        Returns:
        the value to which this map maps the specified key, or null if the map contains no mapping for this key
      • put

        public Object put​(Object oKey,
                          Object oValue)
        Associates the specified value with the specified key in this map.
        Specified by:
        put in interface Map<K,​V>
        Overrides:
        put in class AbstractKeyBasedMap<K,​V>
        Parameters:
        oKey - key with which the specified value is to be associated
        oValue - value to be associated with the specified key
        Returns:
        previous value associated with specified key, or null if there was no mapping for key
      • remove

        public V remove​(Object oKey)
        Removes the mapping for this key from this map if present. Expensive: updates both the underlying cache and the local cache.
        Specified by:
        remove in interface Map<K,​V>
        Overrides:
        remove in class AbstractKeyBasedMap<K,​V>
        Parameters:
        oKey - key whose mapping is to be removed from the map
        Returns:
        previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.
      • instantiateKeySet

        protected Set instantiateKeySet()
        Factory pattern: Create a Set that represents the keys in the Map
        Overrides:
        instantiateKeySet in class AbstractKeyBasedMap<K,​V>
        Returns:
        a new instance of Set that represents the keys in the Map
      • instantiateEntrySet

        protected Set instantiateEntrySet()
        Factory pattern: Create a Set that represents the entries in the Map.
        Overrides:
        instantiateEntrySet in class AbstractKeyBasedMap<K,​V>
        Returns:
        a new instance of Set that represents the entries in the Map
      • iterateKeys

        protected Iterator iterateKeys()
        Create an iterator over the keys in this Map. The Iterator must support remove() if the Map supports removal.
        Specified by:
        iterateKeys in class AbstractKeyBasedMap<K,​V>
        Returns:
        a new instance of an Iterator over the keys in this Map