Package org.greenrobot.essentials.hash
Class Murmur3F
java.lang.Object
org.greenrobot.essentials.hash.Murmur3F
- All Implemented Interfaces:
Checksum
,Checksum128
Murmur3F (MurmurHash3_x64_128)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final long
private static final long
private boolean
private long
private long
private long
private long
private int
private long
private long
private int
private static PrimitiveArrayUtils
private final long
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
applyKs
(long k1, long k2) private void
private long
fmix64
(long k) private String
getPaddedHexString
(long value) long
getValue()
Positive value.byte[]
Big endian is the default in Java / network byte order.byte[]
Big endian is used by most machines natively.Padded with leading 0s to ensure length of 32.long
Returns the higher 64 bits of the 128 bit hash.void
reset()
void
update
(byte[] b) void
update
(byte[] b, int off, int len) void
update
(int b) void
updateLongBE
(long value) ConsiderupdateLongLE(long)
for better performance if you do not rely on big endian (BE) byte order.void
updateLongLE
(long value) Special update method to hash long values very efficiently using Java's native little endian (LE) byte order.
-
Field Details
-
primitiveArrayUtils
-
C1
private static final long C1- See Also:
-
C2
private static final long C2- See Also:
-
seed
private final long seed -
h1
private long h1 -
h2
private long h2 -
length
private int length -
partialPos
private int partialPos -
partialK1
private long partialK1 -
partialK2
private long partialK2 -
finished
private boolean finished -
finishedH1
private long finishedH1 -
finishedH2
private long finishedH2
-
-
Constructor Details
-
Murmur3F
public Murmur3F() -
Murmur3F
public Murmur3F(int seed)
-
-
Method Details
-
update
public void update(int b) -
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. -
updateLongBE
public void updateLongBE(long value) ConsiderupdateLongLE(long)
for better performance if you do not rely on big endian (BE) byte order. -
update
public void update(byte[] b) -
update
public void update(byte[] b, int off, int len) -
applyKs
private void applyKs(long k1, long k2) -
checkFinished
private void checkFinished() -
fmix64
private long fmix64(long k) -
getValue
public long getValue() -
getValueHigh
public long getValueHigh()Returns the higher 64 bits of the 128 bit hash.- Specified by:
getValueHigh
in interfaceChecksum128
-
getValueBigInteger
Positive value.- Specified by:
getValueBigInteger
in interfaceChecksum128
-
getValueHexString
Padded with leading 0s to ensure length of 32.- Specified by:
getValueHexString
in interfaceChecksum128
-
getPaddedHexString
-
getValueBytesBigEndian
public byte[] getValueBytesBigEndian()Description copied from interface:Checksum128
Big endian is the default in Java / network byte order.- Specified by:
getValueBytesBigEndian
in interfaceChecksum128
-
getValueBytesLittleEndian
public byte[] getValueBytesLittleEndian()Description copied from interface:Checksum128
Big endian is used by most machines natively.- Specified by:
getValueBytesLittleEndian
in interfaceChecksum128
-
reset
public void reset()
-