Class ShortObjectHashMap<V>

java.lang.Object
io.netty.util.collection.ShortObjectHashMap<V>
Type Parameters:
V - The value type stored in the map.
All Implemented Interfaces:
ShortObjectMap<V>, Map<Short,V>

public class ShortObjectHashMap<V> extends Object implements ShortObjectMap<V>
A hash map implementation of ShortObjectMap that uses open addressing for keys. To minimize the memory footprint, this class uses open addressing rather than chaining. Collisions are resolved using linear probing. Deletions implement compaction, so cost of remove can approach O(N) for full maps, which makes a small loadFactor recommended.
  • Field Details

    • DEFAULT_CAPACITY

      public static final int DEFAULT_CAPACITY
      Default initial capacity. Used if not specified in the constructor
      See Also:
    • DEFAULT_LOAD_FACTOR

      public static final float DEFAULT_LOAD_FACTOR
      Default load factor. Used if not specified in the constructor
      See Also:
    • NULL_VALUE

      private static final Object NULL_VALUE
      Placeholder for null values, so we can use the actual null to mean available. (Better than using a placeholder for available: less references for GC processing.)
    • maxSize

      private int maxSize
      The maximum number of elements allowed without allocating more space.
    • loadFactor

      private final float loadFactor
      The load factor for the map. Used to calculate maxSize.
    • keys

      private short[] keys
    • values

      private V[] values
    • size

      private int size
    • mask

      private int mask
    • keySet

      private final Set<Short> keySet
    • entrySet

      private final Set<Map.Entry<Short,V>> entrySet
    • entries

      private final Iterable<ShortObjectMap.PrimitiveEntry<V>> entries
  • Constructor Details

    • ShortObjectHashMap

      public ShortObjectHashMap()
    • ShortObjectHashMap

      public ShortObjectHashMap(int initialCapacity)
    • ShortObjectHashMap

      public ShortObjectHashMap(int initialCapacity, float loadFactor)
  • Method Details

    • toExternal

      private static <T> T toExternal(T value)
    • toInternal

      private static <T> T toInternal(T value)
    • get

      public V get(short key)
      Description copied from interface: ShortObjectMap
      Gets the value in the map with the specified key.
      Specified by:
      get in interface ShortObjectMap<V>
      Parameters:
      key - the key whose associated value is to be returned.
      Returns:
      the value or null if the key was not found in the map.
    • put

      public V put(short key, V value)
      Description copied from interface: ShortObjectMap
      Puts the given entry into the map.
      Specified by:
      put in interface ShortObjectMap<V>
      Parameters:
      key - the key of the entry.
      value - the value of the entry.
      Returns:
      the previous value for this key or null if there was no previous mapping.
    • putAll

      public void putAll(Map<? extends Short,? extends V> sourceMap)
      Specified by:
      putAll in interface Map<Short,V>
    • remove

      public V remove(short key)
      Description copied from interface: ShortObjectMap
      Removes the entry with the specified key.
      Specified by:
      remove in interface ShortObjectMap<V>
      Parameters:
      key - the key for the entry to be removed from this map.
      Returns:
      the previous value for the key, or null if there was no mapping.
    • size

      public int size()
      Specified by:
      size in interface Map<Short,V>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<Short,V>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<Short,V>
    • containsKey

      public boolean containsKey(short key)
      Description copied from interface: ShortObjectMap
      Indicates whether or not this map contains a value for the specified key.
      Specified by:
      containsKey in interface ShortObjectMap<V>
    • containsValue

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map<Short,V>
    • entries

      Description copied from interface: ShortObjectMap
      Gets an iterable to traverse over the primitive entries contained in this map. As an optimization, the ShortObjectMap.PrimitiveEntrys returned by the
      invalid reference
      Iterator
      may change as the
      invalid reference
      Iterator
      progresses. The caller should not rely on ShortObjectMap.PrimitiveEntry key/value stability.
      Specified by:
      entries in interface ShortObjectMap<V>
    • values

      public Collection<V> values()
      Specified by:
      values in interface Map<Short,V>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<Short,V>
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface Map<Short,V>
      Overrides:
      equals in class Object
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map<Short,V>
    • get

      public V get(Object key)
      Specified by:
      get in interface Map<Short,V>
    • put

      public V put(Short key, V value)
      Specified by:
      put in interface Map<Short,V>
    • remove

      public V remove(Object key)
      Specified by:
      remove in interface Map<Short,V>
    • keySet

      public Set<Short> keySet()
      Specified by:
      keySet in interface Map<Short,V>
    • entrySet

      public Set<Map.Entry<Short,V>> entrySet()
      Specified by:
      entrySet in interface Map<Short,V>
    • objectToKey

      private short objectToKey(Object key)
    • indexOf

      private int indexOf(short key)
      Locates the index for the given key. This method probes using double hashing.
      Parameters:
      key - the key for an entry in the map.
      Returns:
      the index where the key was found, or -1 if no entry is found for that key.
    • hashIndex

      private int hashIndex(short key)
      Returns the hashed index for the given key.
    • hashCode

      private static int hashCode(short key)
      Returns the hash code for the key.
    • probeNext

      private int probeNext(int index)
      Get the next sequential index after index and wraps if necessary.
    • growSize

      private void growSize()
      Grows the map size after an insertion. If necessary, performs a rehash of the map.
    • removeAt

      private boolean removeAt(int index)
      Removes entry at the given index position. Also performs opportunistic, incremental rehashing if necessary to not break conflict chains.
      Parameters:
      index - the index position of the element to remove.
      Returns:
      true if the next item was moved back. false otherwise.
    • calcMaxSize

      private int calcMaxSize(int capacity)
      Calculates the maximum size allowed before rehashing.
    • rehash

      private void rehash(int newCapacity)
      Rehashes the map for the given capacity.
      Parameters:
      newCapacity - the new capacity for the map.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • keyToString

      protected String keyToString(short key)
      Helper method called by toString() in order to convert a single map key into a string. This is protected to allow subclasses to override the appearance of a given key.