Class HashCode
- java.lang.Object
-
- com.google.common.hash.HashCode
-
public abstract class HashCode extends java.lang.Object
An immutable hash code of arbitrary bit length.- Since:
- 11.0
- Author:
- Dimitris Andreou, Kurt Alfred Kluever
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 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 Detail
-
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
public static HashCode fromInt(int hash)
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
public static HashCode fromLong(long hash)
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
public static HashCode fromBytes(byte[] bytes)
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
public static HashCode fromString(java.lang.String string)
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(@CheckForNull 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, whether this string is big-endian or little-endian depends on the byte order of
asBytes()
. This may be surprising for implementations ofHashCode
that represent the number in big-endian since everything else in the hashing API uniformly treats multibyte values as little-endian.To create a
HashCode
from its string representation, seefromString(java.lang.String)
.- Overrides:
toString
in classjava.lang.Object
-
-