Package io.virtdata.core.murmur
Class Murmur3F
- java.lang.Object
-
- io.virtdata.core.murmur.Murmur3F
-
- All Implemented Interfaces:
Checksum128,java.util.zip.Checksum
public class Murmur3F extends java.lang.Object implements Checksum128
Murmur3F (MurmurHash3_x64_128)
-
-
Method Summary
Modifier and Type Method Description longgetValue()java.math.BigIntegergetValueBigInteger()Positive value.byte[]getValueBytesBigEndian()Big endian is the default in Java / network byte order.byte[]getValueBytesLittleEndian()Big endian is used by most machines natively.java.lang.StringgetValueHexString()Padded with leading 0s to ensure length of 32.longgetValueHigh()Returns the higher 64 bits of the 128 bit hash.voidreset()voidupdate(byte[] b)voidupdate(byte[] b, int off, int len)voidupdate(int b)voidupdateLongBE(long value)ConsiderupdateLongLE(long)for better performance if you do not rely on big endian (BE) byte order.voidupdateLongLE(long value)Special update method to hash long values very efficiently using Java's native little endian (LE) byte order.
-
-
-
Constructor Detail
-
Murmur3F
public Murmur3F(int seed, boolean unsafe)This constructor allows you to require that an unsafe implementation of primitive array operations is used, for added speed on platforms that you know can support it. This allows callers to have an easy way to exclusively opt in or out of unsafe behavior at a class-loader level, rather than forcing an unsafe behavior before the caller gets a chance to intervene. The choice is either/or, not "optional, but fall back if not supported." Callers can instrument for this with exception handling if it is needed. Effectively, setting the unsafe value chooses an implementation.- Parameters:
seed- A seed to initialize this hash with, or the input when using it as a function.unsafe- Whether to require that the implementation relies on an unsafe calls.
-
Murmur3F
public Murmur3F()
-
Murmur3F
public Murmur3F(int seed)
-
-
Method Detail
-
update
public void update(int b)
- Specified by:
updatein interfacejava.util.zip.Checksum
-
updateLongLE
public void updateLongLE(long value)
Special update method to hash long values very efficiently using Java's native little endian (LE) byte order. Note, that you cannot mix this with other (previous) hash updates, because it only supports 8-bytes alignment.- Parameters:
value- the long to add to the hash register
-
updateLongBE
public void updateLongBE(long value)
ConsiderupdateLongLE(long)for better performance if you do not rely on big endian (BE) byte order.- Parameters:
value- the long to add to the hash register
-
update
public void update(byte[] b)
- Specified by:
updatein interfacejava.util.zip.Checksum
-
update
public void update(byte[] b, int off, int len)- Specified by:
updatein interfacejava.util.zip.Checksum
-
getValue
public long getValue()
- Specified by:
getValuein interfacejava.util.zip.Checksum
-
getValueHigh
public long getValueHigh()
Returns the higher 64 bits of the 128 bit hash.- Specified by:
getValueHighin interfaceChecksum128- Returns:
- Returns the higher 64 bits of the 128 bit hash.
-
getValueBigInteger
public java.math.BigInteger getValueBigInteger()
Positive value.- Specified by:
getValueBigIntegerin interfaceChecksum128- Returns:
- Positive value.
-
getValueHexString
public java.lang.String getValueHexString()
Padded with leading 0s to ensure length of 32.- Specified by:
getValueHexStringin interfaceChecksum128- Returns:
- Padded with leading 0s to ensure length of 32.
-
getValueBytesBigEndian
public byte[] getValueBytesBigEndian()
Description copied from interface:Checksum128Big endian is the default in Java / network byte order.- Specified by:
getValueBytesBigEndianin interfaceChecksum128- Returns:
- Big Endian bytes
-
getValueBytesLittleEndian
public byte[] getValueBytesLittleEndian()
Description copied from interface:Checksum128Big endian is used by most machines natively.- Specified by:
getValueBytesLittleEndianin interfaceChecksum128- Returns:
- Little Endian bytes
-
reset
public void reset()
- Specified by:
resetin interfacejava.util.zip.Checksum
-
-