Class StringIntHashMap


  • public class StringIntHashMap
    extends Object
    Hash map using String values as keys mapped to primitive int values. This implementation is unsynchronized in order to provide the best possible performance for typical usage scenarios, so explicit synchronization must be implemented by a wrapper class or directly by the application in cases where instances are modified in a multithreaded environment. The map implementation is not very efficient when resizing, but works well when the size of the map is known in advance.
    Version:
    1.1
    Author:
    Dennis M. Sosnoski
    • Field Detail

      • DEFAULT_NOT_FOUND

        public static final int DEFAULT_NOT_FOUND
        Default value returned when key not found in table.
        See Also:
        Constant Field Values
      • DEFAULT_FILL

        protected static final double DEFAULT_FILL
        Default fill fraction allowed before growing table.
        See Also:
        Constant Field Values
      • MINIMUM_SIZE

        protected static final int MINIMUM_SIZE
        Minimum size used for hash table.
        See Also:
        Constant Field Values
      • m_fillFraction

        protected final double m_fillFraction
        Fill fraction allowed for this hash table.
      • m_entryCount

        protected int m_entryCount
        Number of entries present in table.
      • m_entryLimit

        protected int m_entryLimit
        Entries allowed before growing table.
      • m_arraySize

        protected int m_arraySize
        Size of array used for keys.
      • m_hitOffset

        protected int m_hitOffset
        Offset added (modulo table size) to slot number on collision.
      • m_keyTable

        protected String[] m_keyTable
        Array of key table slots.
      • m_valueTable

        protected int[] m_valueTable
        Array of value table slots.
      • m_notFoundValue

        protected int m_notFoundValue
        Value returned when key not found in table.
    • Constructor Detail

      • StringIntHashMap

        public StringIntHashMap​(int count,
                                double fill,
                                int miss)
        Constructor with full specification.
        Parameters:
        count - number of values to assume in initial sizing of table
        fill - fraction full allowed for table before growing
        miss - value returned when key not found in table
      • StringIntHashMap

        public StringIntHashMap​(int count,
                                double fill)
        Constructor with size and fill fraction specified. Uses default hash technique and value returned when key not found in table.
        Parameters:
        count - number of values to assume in initial sizing of table
        fill - fraction full allowed for table before growing
      • StringIntHashMap

        public StringIntHashMap​(int count)
        Constructor with only size supplied. Uses default hash technique and values for fill fraction and value returned when key not found in table.
        Parameters:
        count - number of values to assume in initial sizing of table
      • StringIntHashMap

        public StringIntHashMap()
        Default constructor.
      • StringIntHashMap

        public StringIntHashMap​(StringIntHashMap base)
        Copy (clone) constructor.
        Parameters:
        base - instance being copied
    • Method Detail

      • internalRemove

        protected void internalRemove​(int slot)
        Internal remove pair from the table. Removes the pair from the table by setting the key entry to null and adjusting the count present, then chains through the table to reinsert any other pairs which may have collided with the removed pair. If the associated value is an object reference, it should be set to null before this method is called.
        Parameters:
        slot - index number of pair to be removed
      • add

        public int add​(String key,
                       int value)
        Add an entry to the table. If the key is already present in the table, this replaces the existing value associated with the key.
        Parameters:
        key - key to be added to table (non- null)
        value - associated value for key
        Returns:
        value previously associated with key, or reserved not found value if key not previously present in table
      • containsKey

        public final boolean containsKey​(String key)
        Check if an entry is present in the table. This method is supplied to support the use of values matching the reserved not found value.
        Parameters:
        key - key for entry to be found
        Returns:
        true if key found in table, false if not
      • get

        public final int get​(String key)
        Find an entry in the table.
        Parameters:
        key - key for entry to be returned
        Returns:
        value for key, or reserved not found value if key not found
      • remove

        public int remove​(String key)
        Remove an entry from the table. If multiple entries are present with the same key value, only the first one found will be removed.
        Parameters:
        key - key to be removed from table
        Returns:
        value associated with removed key, or reserved not found value if key not found in table
      • clone

        public Object clone()
        Construct a copy of the table.
        Overrides:
        clone in class Object
        Returns:
        shallow copy of table