Class HashCode
public abstract class HashCode
extends java.lang.Object
- Since:
- 11.0
- Author:
- Dimitris Andreou, Kurt Alfred Kluever
-
Method Summary
Modifier and Type Method Description abstract byte[]
asBytes()
Returns the value of this hash code as a byte array.abstract int
asInt()
Returns the first four bytes of this hashcode's bytes, converted to anint
value in little-endian order.abstract long
asLong()
Returns the first eight bytes of this hashcode's bytes, converted to along
value in little-endian order.abstract int
bits()
Returns the number of bits in this hash code; a positive multiple of 8.boolean
equals(java.lang.Object object)
Returnstrue
ifobject
is aHashCode
instance with the identical byte representation to this hash code.static HashCode
fromBytes(byte[] bytes)
Creates aHashCode
from a byte array.static HashCode
fromInt(int hash)
Creates a 32-bitHashCode
representation of the given int value.static HashCode
fromLong(long hash)
Creates a 64-bitHashCode
representation of the given long value.static HashCode
fromString(java.lang.String string)
Creates aHashCode
from a hexadecimal (base 16
) encoded string.int
hashCode()
Returns a "Java hash code" for thisHashCode
instance; this is well-defined (so, for example, you can safely putHashCode
instances into aHashSet
) but is otherwise probably not what you want to use.abstract long
padToLong()
If this hashcode has enough bits, returnsasLong()
, otherwise returns along
value withasBytes()
as the least-significant bytes and0x00
as the remaining most-significant bytes.java.lang.String
toString()
Returns a string containing each byte ofasBytes()
, in order, as a two-digit unsigned hexadecimal number in lower case.int
writeBytesTo(byte[] dest, int offset, int maxLength)
Copies bytes from this hash code intodest
.
-
Method Details
-
bits
public abstract int bits()Returns the number of bits in this hash code; a positive multiple of 8. -
asInt
public abstract int asInt()Returns the first four bytes of this hashcode's bytes, converted to anint
value in little-endian order.- Throws:
java.lang.IllegalStateException
- ifbits() < 32
-
asLong
public abstract long asLong()Returns the first eight bytes of this hashcode's bytes, converted to along
value in little-endian order.- Throws:
java.lang.IllegalStateException
- ifbits() < 64
-
padToLong
public abstract long padToLong()If this hashcode has enough bits, returnsasLong()
, otherwise returns along
value withasBytes()
as the least-significant bytes and0x00
as the remaining most-significant bytes.- Since:
- 14.0 (since 11.0 as
Hashing.padToLong(HashCode)
)
-
asBytes
public abstract byte[] asBytes()Returns the value of this hash code as a byte array. The caller may modify the byte array; changes to it will not be reflected in thisHashCode
object or any other arrays returned by this method. -
writeBytesTo
@CanIgnoreReturnValue public int writeBytesTo(byte[] dest, int offset, int maxLength)Copies bytes from this hash code intodest
.- Parameters:
dest
- the byte array into which the hash code will be writtenoffset
- the start offset in the datamaxLength
- the maximum number of bytes to write- Returns:
- the number of bytes written to
dest
- Throws:
java.lang.IndexOutOfBoundsException
- if there is not enough room indest
-
fromInt
Creates a 32-bitHashCode
representation of the given int value. The underlying bytes are interpreted in little endian order.- Since:
- 15.0 (since 12.0 in HashCodes)
-
fromLong
Creates a 64-bitHashCode
representation of the given long value. The underlying bytes are interpreted in little endian order.- Since:
- 15.0 (since 12.0 in HashCodes)
-
fromBytes
Creates aHashCode
from a byte array. The array is defensively copied to preserve the immutability contract ofHashCode
. The array cannot be empty.- Since:
- 15.0 (since 12.0 in HashCodes)
-
fromString
Creates aHashCode
from a hexadecimal (base 16
) encoded string. The string must be at least 2 characters long, and contain only valid, lower-cased hexadecimal characters.This method accepts the exact format generated by
toString()
. If you require more lenientbase 16
decoding, please useBaseEncoding.decode(java.lang.CharSequence)
(and pass the result tofromBytes(byte[])
).- Since:
- 15.0
-
equals
public final boolean equals(@Nullable java.lang.Object object)Returnstrue
ifobject
is aHashCode
instance with the identical byte representation to this hash code.Security note: this method uses a constant-time (not short-circuiting) implementation to protect against timing attacks.
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public final int hashCode()Returns a "Java hash code" for thisHashCode
instance; this is well-defined (so, for example, you can safely putHashCode
instances into aHashSet
) but is otherwise probably not what you want to use.- Overrides:
hashCode
in classjava.lang.Object
-
toString
public final java.lang.String toString()Returns a string containing each byte ofasBytes()
, in order, as a two-digit unsigned hexadecimal number in lower case.Note that if the output is considered to be a single hexadecimal number, this hash code's bytes are the big-endian representation of that number. This may be surprising since everything else in the hashing API uniformly treats multibyte values as little-endian. But this format conveniently matches that of utilities such as the UNIX
md5sum
command.To create a
HashCode
from its string representation, seefromString(java.lang.String)
.- Overrides:
toString
in classjava.lang.Object
-