@Beta public final class Hashing extends Object
HashFunction instances, and other static hashing-related utilities.
A comparison of the various hash functions can be found here.
| Modifier and Type | Method and Description |
|---|---|
static HashFunction |
adler32()
|
static HashCode |
combineOrdered(Iterable
Returns a hash code, having the same bit length as each of the input hash codes, that combines the information of these hash codes in an ordered fashion.
|
static HashCode |
combineUnordered(Iterable
Returns a hash code, having the same bit length as each of the input hash codes, that combines the information of these hash codes in an unordered fashion.
|
static int |
consistentHash(HashCode
Assigns to
hashCode a "bucket" in the range
[0, buckets), in a uniform manner that minimizes the need for remapping as
buckets grows.
|
static int |
consistentHash(long input, int buckets)
Assigns to
input a "bucket" in the range
[0, buckets), in a uniform manner that minimizes the need for remapping as
buckets grows.
|
static HashFunction |
crc32()
|
static HashFunction |
crc32c()
Returns a hash function implementing the CRC32C checksum algorithm (32 hash bits) as described by RFC 3720, Section 12.1.
|
static HashFunction |
goodFastHash(int minimumBits)
Returns a general-purpose,
temporary-use, non-cryptographic hash function.
|
static HashFunction |
md5()
Returns a hash function implementing the MD5 hash algorithm (128 hash bits) by delegating to the MD5
MessageDigest.
|
static HashFunction |
murmur3_128()
Returns a hash function implementing the
128-bit murmur3 algorithm, x64 variant (little-endian variant), using a seed value of zero.
|
static HashFunction |
murmur3_128(int seed)
Returns a hash function implementing the
128-bit murmur3 algorithm, x64 variant (little-endian variant), using the given seed value.
|
static HashFunction |
murmur3_32()
Returns a hash function implementing the
32-bit murmur3 algorithm, x86 variant (little-endian variant), using a seed value of zero.
|
static HashFunction |
murmur3_32(int seed)
Returns a hash function implementing the
32-bit murmur3 algorithm, x86 variant (little-endian variant), using the given seed value.
|
static HashFunction |
sha1()
Returns a hash function implementing the SHA-1 algorithm (160 hash bits) by delegating to the SHA-1
MessageDigest.
|
static HashFunction |
sha256()
Returns a hash function implementing the SHA-256 algorithm (256 hash bits) by delegating to the SHA-256
MessageDigest.
|
static HashFunction |
sha512()
Returns a hash function implementing the SHA-512 algorithm (512 hash bits) by delegating to the SHA-512
MessageDigest.
|
static HashFunction |
sipHash24()
Returns a hash function implementing the
64-bit SipHash-2-4 algorithm using a seed value of
k = 00 01 02 ....
|
static HashFunction |
sipHash24(long k0, long k1)
Returns a hash function implementing the
64-bit SipHash-2-4 algorithm using the given seed.
|
public static HashFunctiongoodFastHash(int minimumBits)
Warning: a new random seed for these functions is chosen each time the Hashing class is loaded. Do not use this method if hash codes may escape the current process in any way, for example being sent over RPC, or saved to disk.
Repeated calls to this method on the same loaded Hashing class, using the same value for minimumBits, will return identically-behaving HashFunction instances.
minimumBits - a positive integer (can be arbitrarily large)
minimumBits or greater
public static HashFunctionmurmur3_32(int seed)
The exact C++ equivalent is the MurmurHash3_x86_32 function (Murmur3A).
public static HashFunctionmurmur3_32()
The exact C++ equivalent is the MurmurHash3_x86_32 function (Murmur3A).
public static HashFunctionmurmur3_128(int seed)
The exact C++ equivalent is the MurmurHash3_x64_128 function (Murmur3F).
public static HashFunctionmurmur3_128()
The exact C++ equivalent is the MurmurHash3_x64_128 function (Murmur3F).
public static HashFunctionsipHash24()
k = 00 01 02 ....
public static HashFunctionsipHash24(long k0, long k1)
public static HashFunctionmd5()
MessageDigest.
public static HashFunctionsha1()
MessageDigest.
public static HashFunctionsha256()
MessageDigest.
public static HashFunctionsha512()
MessageDigest.
public static HashFunctioncrc32c()
public static HashFunctioncrc32()
CRC32
Checksum.
To get the long value equivalent to Checksum for a HashCode produced by this function, use HashCode.
public static HashFunctionadler32()
Adler32
Checksum.
To get the long value equivalent to Checksum for a HashCode produced by this function, use HashCode.
public static int consistentHash(HashCodehashCode, int buckets)
hashCode a "bucket" in the range
[0, buckets), in a uniform manner that minimizes the need for remapping as
buckets grows. That is,
consistentHash(h, n) equals:
n - 1, with approximate probability 1/n consistentHash(h, n - 1), otherwise (probability 1 - 1/n) See the wikipedia article on consistent hashing for more information.
public static int consistentHash(long input,
int buckets)
input a "bucket" in the range
[0, buckets), in a uniform manner that minimizes the need for remapping as
buckets grows. That is,
consistentHash(h, n) equals:
n - 1, with approximate probability 1/n consistentHash(h, n - 1), otherwise (probability 1 - 1/n) See the wikipedia article on consistent hashing for more information.
public static HashCodecombineOrdered(Iterable <HashCode > hashCodes)
IllegalArgumentException - if
hashCodes is empty, or the hash codes do not all have the same bit length
public static HashCodecombineUnordered(Iterable <HashCode > hashCodes)
IllegalArgumentException - if
hashCodes is empty, or the hash codes do not all have the same bit length