Package org.infinispan.commons.hash
Class MurmurHash3
- java.lang.Object
-
- org.infinispan.commons.hash.MurmurHash3
-
- All Implemented Interfaces:
Hash
@ThreadSafe @Immutable public class MurmurHash3 extends Object implements Hash
MurmurHash3 implementation in Java, based on Austin Appleby's original in C Only implementing x64 version, because this should always be faster on 64 bit native processors, even 64 bit being ran with a 32 bit OS; this should also be as fast or faster than the x86 version on some modern 32 bit processors.- Since:
- 5.0
- Author:
- Patrick McFarland
- See Also:
- MurmurHash website, MurmurHash entry on Wikipedia
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MurmurHash3.Externalizer
-
Field Summary
Fields Modifier and Type Field Description static byte
INVALID_CHAR
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object other)
static MurmurHash3
getInstance()
int
hash(byte[] payload)
Hashes a byte array efficiently.int
hash(int hashcode)
An incremental version of the hash function, that spreads a pre-calculated hash code, such as one derived fromObject.hashCode()
.static int
hash(long[] payload)
Hashes a byte array efficiently.int
hash(Object o)
A helper that calculates the hashcode of an object, choosing the optimal mechanism of hash calculation after considering the type of the object (byte array, String or Object).int
hashCode()
static long[]
MurmurHash3_x64_128(byte[] key, int seed)
Hash a value using the x64 128 bit variant of MurmurHash3static long[]
MurmurHash3_x64_128(long[] key, int seed)
Hash a value using the x64 128 bit variant of MurmurHash3static int
MurmurHash3_x64_32(byte[] key, int seed)
Hash a value using the x64 32 bit variant of MurmurHash3static int
MurmurHash3_x64_32(long[] key, int seed)
Hash a value using the x64 32 bit variant of MurmurHash3static long
MurmurHash3_x64_64(byte[] key, int seed)
Hash a value using the x64 64 bit variant of MurmurHash3static long
MurmurHash3_x64_64(long[] key, int seed)
Hash a value using the x64 64 bit variant of MurmurHash3String
toString()
-
-
-
Field Detail
-
INVALID_CHAR
public static final byte INVALID_CHAR
- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static MurmurHash3 getInstance()
-
MurmurHash3_x64_128
public static long[] MurmurHash3_x64_128(byte[] key, int seed)
Hash a value using the x64 128 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 128 bit hashed key, in an array containing two longs
-
MurmurHash3_x64_64
public static long MurmurHash3_x64_64(byte[] key, int seed)
Hash a value using the x64 64 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 64 bit hashed key
-
MurmurHash3_x64_32
public static int MurmurHash3_x64_32(byte[] key, int seed)
Hash a value using the x64 32 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 32 bit hashed key
-
MurmurHash3_x64_128
public static long[] MurmurHash3_x64_128(long[] key, int seed)
Hash a value using the x64 128 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 128 bit hashed key, in an array containing two longs
-
MurmurHash3_x64_64
public static long MurmurHash3_x64_64(long[] key, int seed)
Hash a value using the x64 64 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 64 bit hashed key
-
MurmurHash3_x64_32
public static int MurmurHash3_x64_32(long[] key, int seed)
Hash a value using the x64 32 bit variant of MurmurHash3- Parameters:
key
- value to hashseed
- random value- Returns:
- 32 bit hashed key
-
hash
public int hash(byte[] payload)
Description copied from interface:Hash
Hashes a byte array efficiently.
-
hash
public static int hash(long[] payload)
Hashes a byte array efficiently.- Parameters:
payload
- a byte array to hash- Returns:
- a hash code for the byte array
-
hash
public int hash(int hashcode)
Description copied from interface:Hash
An incremental version of the hash function, that spreads a pre-calculated hash code, such as one derived fromObject.hashCode()
.
-
hash
public int hash(Object o)
Description copied from interface:Hash
A helper that calculates the hashcode of an object, choosing the optimal mechanism of hash calculation after considering the type of the object (byte array, String or Object).
-
-