com.google.common.hash
Class HashCode

java.lang.Object
  extended by com.google.common.hash.HashCode

@Beta
public abstract class HashCode
extends java.lang.Object

An immutable hash code of arbitrary bit length.

Since:
11.0

Method Summary
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 an int value in little-endian order.
abstract  long asLong()
          Returns the first eight bytes of this hashcode's bytes, converted to a long 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)
           
 int hashCode()
          Returns a "Java hash code" for this HashCode instance; this is well-defined (so, for example, you can safely put HashCode instances into a HashSet) but is otherwise probably not what you want to use.
abstract  long padToLong()
          If this hashcode has enough bits, returns asLong(), otherwise returns a long value with asInt() as the least-significant four bytes and 0x00 as each of the most-significant four bytes.
 java.lang.String toString()
          Returns a string containing each byte of asBytes(), 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 into dest.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

asInt

public abstract int asInt()
Returns the first four bytes of this hashcode's bytes, converted to an int value in little-endian order.

Throws:
java.lang.IllegalStateException - if bits() < 32

asLong

public abstract long asLong()
Returns the first eight bytes of this hashcode's bytes, converted to a long value in little-endian order.

Throws:
java.lang.IllegalStateException - if bits() < 64

padToLong

public abstract long padToLong()
If this hashcode has enough bits, returns asLong(), otherwise returns a long value with asInt() as the least-significant four bytes and 0x00 as each of the most-significant four 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 this HashCode object or any other arrays returned by this method.


writeBytesTo

public int writeBytesTo(byte[] dest,
                        int offset,
                        int maxLength)
Copies bytes from this hash code into dest.

Parameters:
dest - the byte array into which the hash code will be written
offset - the start offset in the data
maxLength - 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 in dest

bits

public abstract int bits()
Returns the number of bits in this hash code; a positive multiple of 8.


equals

public boolean equals(@Nullable
                      java.lang.Object object)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Returns a "Java hash code" for this HashCode instance; this is well-defined (so, for example, you can safely put HashCode instances into a HashSet) but is otherwise probably not what you want to use.

Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Returns a string containing each byte of asBytes(), 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.

Overrides:
toString in class java.lang.Object