Class HashCommon


  • public class HashCommon
    extends Object
    Common code for all hash-based classes.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static Object REMOVED
      This reference is used to fill keys and values of removed entries (if they are objects).
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected HashCommon()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static int arraySize​(int expected, float f)
      Returns the least power of two smaller than or equal to 230 and larger than or equal to Math.ceil( expected / f ).
      static long bigArraySize​(long expected, float f)
      Returns the least power of two larger than or equal to Math.ceil( expected / f ).
      static int double2int​(double d)
      Returns the hash code that would be returned by Double.hashCode().
      static int float2int​(float f)
      Returns the hash code that would be returned by Float.hashCode().
      static int long2int​(long l)
      Returns the hash code that would be returned by Long.hashCode().
      static int maxFill​(int n, float f)
      Returns the maximum number of entries that can be filled before rehashing.
      static long maxFill​(long n, float f)
      Returns the maximum number of entries that can be filled before rehashing.
      static int murmurHash3​(int x)
      Avalanches the bits of an integer by applying the finalisation step of MurmurHash3.
      static long murmurHash3​(long x)
      Avalanches the bits of a long integer by applying the finalisation step of MurmurHash3.
      static int nextPowerOfTwo​(int x)
      Return the least power of two greater than or equal to the specified value.
      static long nextPowerOfTwo​(long x)
      Return the least power of two greater than or equal to the specified value.
    • Field Detail

      • REMOVED

        public static final Object REMOVED
        This reference is used to fill keys and values of removed entries (if they are objects). null cannot be used as it would confuse the search algorithm in the presence of an actual null key.
    • Constructor Detail

      • HashCommon

        protected HashCommon()
    • Method Detail

      • murmurHash3

        public static final int murmurHash3​(int x)
        Avalanches the bits of an integer by applying the finalisation step of MurmurHash3.

        This method implements the finalisation step of Austin Appleby's MurmurHash3. Its purpose is to avalanche the bits of the argument to within 0.25% bias. It is used, among other things, to scramble quickly (but deeply) the hash values returned by Object.hashCode().

        Parameters:
        x - an integer.
        Returns:
        a hash value with good avalanching properties.
      • murmurHash3

        public static final long murmurHash3​(long x)
        Avalanches the bits of a long integer by applying the finalisation step of MurmurHash3.

        This method implements the finalisation step of Austin Appleby's MurmurHash3. Its purpose is to avalanche the bits of the argument to within 0.25% bias. It is used, among other things, to scramble quickly (but deeply) the hash values returned by Object.hashCode().

        Incidentally, iterating this method starting from a nonzero value will generate a sequence of nonzero values that passes strongest statistical tests.

        Parameters:
        x - a long integer.
        Returns:
        a hash value with good avalanching properties.
      • nextPowerOfTwo

        public static int nextPowerOfTwo​(int x)
        Return the least power of two greater than or equal to the specified value.

        Note that this function will return 1 when the argument is 0.

        Parameters:
        x - an integer smaller than or equal to 230.
        Returns:
        the least power of two greater than or equal to the specified value.
      • nextPowerOfTwo

        public static long nextPowerOfTwo​(long x)
        Return the least power of two greater than or equal to the specified value.

        Note that this function will return 1 when the argument is 0.

        Parameters:
        x - a long integer smaller than or equal to 262.
        Returns:
        the least power of two greater than or equal to the specified value.
      • maxFill

        public static int maxFill​(int n,
                                  float f)
        Returns the maximum number of entries that can be filled before rehashing.
        Parameters:
        n - the size of the backing array.
        f - the load factor.
        Returns:
        the maximum number of entries before rehashing.
      • maxFill

        public static long maxFill​(long n,
                                   float f)
        Returns the maximum number of entries that can be filled before rehashing.
        Parameters:
        n - the size of the backing array.
        f - the load factor.
        Returns:
        the maximum number of entries before rehashing.
      • arraySize

        public static int arraySize​(int expected,
                                    float f)
        Returns the least power of two smaller than or equal to 230 and larger than or equal to Math.ceil( expected / f ).
        Parameters:
        expected - the expected number of elements in a hash table.
        f - the load factor.
        Returns:
        the minimum possible size for a backing array.
        Throws:
        IllegalArgumentException - if the necessary size is larger than 230.
      • bigArraySize

        public static long bigArraySize​(long expected,
                                        float f)
        Returns the least power of two larger than or equal to Math.ceil( expected / f ).
        Parameters:
        expected - the expected number of elements in a hash table.
        f - the load factor.
        Returns:
        the minimum possible size for a backing big array.