final class Murmur3_32HashFunction extends AbstractHashFunction implements java.io.Serializable
| Modifier and Type | Class and Description |
|---|---|
private static class |
Murmur3_32HashFunction.Murmur3_32Hasher |
| Modifier and Type | Field and Description |
|---|---|
private static int |
C1 |
private static int |
C2 |
private static int |
CHUNK_SIZE |
(package private) static HashFunction |
GOOD_FAST_HASH_32 |
(package private) static HashFunction |
MURMUR3_32 |
(package private) static HashFunction |
MURMUR3_32_FIXED |
private int |
seed |
private static long |
serialVersionUID |
private boolean |
supplementaryPlaneFix |
| Constructor and Description |
|---|
Murmur3_32HashFunction(int seed,
boolean supplementaryPlaneFix) |
| Modifier and Type | Method and Description |
|---|---|
int |
bits()
Returns the number of bits (a multiple of 32) that each hash code produced by this hash
function has.
|
private static long |
charToThreeUtf8Bytes(char c) |
private static long |
charToTwoUtf8Bytes(char c) |
private static long |
codePointToFourUtf8Bytes(int codePoint) |
boolean |
equals(java.lang.Object object) |
private static HashCode |
fmix(int h1,
int length) |
private static int |
getIntLittleEndian(byte[] input,
int offset) |
HashCode |
hashBytes(byte[] input,
int off,
int len)
Shortcut for
newHasher().putBytes(input, off, len).hash(). |
int |
hashCode() |
HashCode |
hashInt(int input)
Shortcut for
newHasher().putInt(input).hash(); returns the hash code for the given
int value, interpreted in little-endian byte order. |
HashCode |
hashLong(long input)
Shortcut for
newHasher().putLong(input).hash(); returns the hash code for the given
long value, interpreted in little-endian byte order. |
HashCode |
hashString(java.lang.CharSequence input,
java.nio.charset.Charset charset)
Shortcut for
newHasher().putString(input, charset).hash(). |
HashCode |
hashUnencodedChars(java.lang.CharSequence input)
Shortcut for
newHasher().putUnencodedChars(input).hash(). |
private static int |
mixH1(int h1,
int k1) |
private static int |
mixK1(int k1) |
Hasher |
newHasher()
Begins a new hash code computation by returning an initialized, stateful
Hasher
instance that is ready to receive data. |
java.lang.String |
toString() |
hashBytes, hashBytes, hashObject, newHasherstatic final HashFunction MURMUR3_32
static final HashFunction MURMUR3_32_FIXED
static final HashFunction GOOD_FAST_HASH_32
private static final int CHUNK_SIZE
private static final int C1
private static final int C2
private final int seed
private final boolean supplementaryPlaneFix
private static final long serialVersionUID
Murmur3_32HashFunction(int seed,
boolean supplementaryPlaneFix)
public int bits()
HashFunctionbits in interface HashFunctionpublic Hasher newHasher()
HashFunctionHasher
instance that is ready to receive data. Example:
HashFunction hf = Hashing.md5();
HashCode hc = hf.newHasher()
.putLong(id)
.putBoolean(isActive)
.hash();
newHasher in interface HashFunctionpublic java.lang.String toString()
toString in class java.lang.Objectpublic boolean equals(@CheckForNull
java.lang.Object object)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic HashCode hashInt(int input)
HashFunctionnewHasher().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.hashInt in interface HashFunctionhashInt in class AbstractHashFunctionpublic HashCode hashLong(long input)
HashFunctionnewHasher().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.hashLong in interface HashFunctionhashLong in class AbstractHashFunctionpublic HashCode hashUnencodedChars(java.lang.CharSequence input)
HashFunctionnewHasher().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.
hashUnencodedChars in interface HashFunctionhashUnencodedChars in class AbstractHashFunctionpublic HashCode hashString(java.lang.CharSequence input, java.nio.charset.Charset charset)
HashFunctionnewHasher().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.
hashString in interface HashFunctionhashString in class AbstractHashFunctionpublic HashCode hashBytes(byte[] input, int off, int len)
HashFunctionnewHasher().putBytes(input, off, len).hash(). The implementation
might perform better than its longhand equivalent, but should not perform worse.hashBytes in interface HashFunctionhashBytes in class AbstractHashFunctionprivate static int getIntLittleEndian(byte[] input,
int offset)
private static int mixK1(int k1)
private static int mixH1(int h1,
int k1)
private static HashCode fmix(int h1, int length)
private static long codePointToFourUtf8Bytes(int codePoint)
private static long charToThreeUtf8Bytes(char c)
private static long charToTwoUtf8Bytes(char c)