Class Murmur3_32HashFunction

java.lang.Object
com.google.common.hash.AbstractHashFunction
com.google.common.hash.Murmur3_32HashFunction
All Implemented Interfaces:
HashFunction, Serializable

final class Murmur3_32HashFunction extends AbstractHashFunction implements Serializable
See MurmurHash3_x86_32 in the C++ implementation.
  • Field Details

  • Constructor Details

    • Murmur3_32HashFunction

      Murmur3_32HashFunction(int seed, boolean supplementaryPlaneFix)
  • Method Details

    • bits

      public int bits()
      Description copied from interface: HashFunction
      Returns the number of bits (a multiple of 32) that each hash code produced by this hash function has.
      Specified by:
      bits in interface HashFunction
    • newHasher

      public Hasher newHasher()
      Description copied from interface: HashFunction
      Begins a new hash code computation by returning an initialized, stateful Hasher instance that is ready to receive data. Example:
      
       HashFunction hf = Hashing.md5();
       HashCode hc = hf.newHasher()
           .putLong(id)
           .putBoolean(isActive)
           .hash();
       
      Specified by:
      newHasher in interface HashFunction
    • toString

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

      public boolean equals(@CheckForNull Object object)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • hashInt

      public HashCode hashInt(int input)
      Description copied from interface: HashFunction
      Shortcut for newHasher().putInt(input).hash(); returns the hash code for the given int value, interpreted in little-endian byte order. The implementation might perform better than its longhand equivalent, but should not perform worse.
      Specified by:
      hashInt in interface HashFunction
      Overrides:
      hashInt in class AbstractHashFunction
    • hashLong

      public HashCode hashLong(long input)
      Description copied from interface: HashFunction
      Shortcut for newHasher().putLong(input).hash(); returns the hash code for the given long value, interpreted in little-endian byte order. The implementation might perform better than its longhand equivalent, but should not perform worse.
      Specified by:
      hashLong in interface HashFunction
      Overrides:
      hashLong in class AbstractHashFunction
    • hashUnencodedChars

      public HashCode hashUnencodedChars(CharSequence input)
      Description copied from interface: HashFunction
      Shortcut for newHasher().putUnencodedChars(input).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse. Note that no character encoding is performed; the low byte and high byte of each char are hashed directly (in that order).

      Warning: This method will produce different output than most other languages do when running the same hash function on the equivalent input. For cross-language compatibility, use HashFunction.hashString(java.lang.CharSequence, java.nio.charset.Charset), usually with a charset of UTF-8. For other use cases, use hashUnencodedChars.

      Specified by:
      hashUnencodedChars in interface HashFunction
      Overrides:
      hashUnencodedChars in class AbstractHashFunction
    • hashString

      public HashCode hashString(CharSequence input, Charset charset)
      Description copied from interface: HashFunction
      Shortcut for newHasher().putString(input, charset).hash(). Characters are encoded using the given Charset. The implementation might perform better than its longhand equivalent, but should not perform worse.

      Warning: This method, which reencodes the input before hashing it, is useful only for cross-language compatibility. For other use cases, prefer HashFunction.hashUnencodedChars(java.lang.CharSequence), which is faster, produces the same output across Java releases, and hashes every char in the input, even if some are invalid.

      Specified by:
      hashString in interface HashFunction
      Overrides:
      hashString in class AbstractHashFunction
    • hashBytes

      public HashCode hashBytes(byte[] input, int off, int len)
      Description copied from interface: HashFunction
      Shortcut for newHasher().putBytes(input, off, len).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse.
      Specified by:
      hashBytes in interface HashFunction
      Overrides:
      hashBytes in class AbstractHashFunction
    • getIntLittleEndian

      private static int getIntLittleEndian(byte[] input, int offset)
    • mixK1

      private static int mixK1(int k1)
    • mixH1

      private static int mixH1(int h1, int k1)
    • fmix

      private static HashCode fmix(int h1, int length)
    • codePointToFourUtf8Bytes

      private static long codePointToFourUtf8Bytes(int codePoint)
    • charToThreeUtf8Bytes

      private static long charToThreeUtf8Bytes(char c)
    • charToTwoUtf8Bytes

      private static long charToTwoUtf8Bytes(char c)