|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
@Beta public interface Hasher
A PrimitiveSink that can compute a hash code after reading the input. Each hasher should
translate all multibyte values (putInt(int), putLong(long), etc) to bytes
in little-endian order.
The result of calling any methods after calling hash() is undefined.
Warning: Chunks of data that are put into the Hasher are not delimited.
The resulting HashCode is dependent only on the bytes inserted, and the order in which
they were inserted, not how those bytes were chunked into discrete put() operations. For example,
the following three expressions all generate colliding hash codes:
newHasher().putString("ab").putString("c").hash()
newHasher().putString("a").putString("bc").hash()
newHasher().putChar('a').putChar('b').putChar('c').hash()
If you wish to avoid this, you should either prepend or append the size of each chunk.
For example:
newHasher().putInt(s1.length()).putString(s1).putInt(s2.length()).putString(s2).hash()
| Method Summary | ||
|---|---|---|
HashCode |
hash()
Computes a hash code based on the data that have been provided to this hasher. |
|
Hasher |
putBoolean(boolean b)
Equivalent to putByte(b ? (byte) 1 : (byte) 0). |
|
Hasher |
putByte(byte b)
Puts a byte into this sink. |
|
Hasher |
putBytes(byte[] bytes)
Puts an array of bytes into this sink. |
|
Hasher |
putBytes(byte[] bytes,
int off,
int len)
Puts a chunk of an array of bytes into this sink. |
|
Hasher |
putChar(char c)
Puts a character into this sink. |
|
Hasher |
putDouble(double d)
Equivalent to putLong(Double.doubleToRawLongBits(d)). |
|
Hasher |
putFloat(float f)
Equivalent to putInt(Float.floatToRawIntBits(f)). |
|
Hasher |
putInt(int i)
Puts an int into this sink. |
|
Hasher |
putLong(long l)
Puts a long into this sink. |
|
|
putObject(T instance,
Funnel<? super T> funnel)
A simple convenience for funnel.funnel(object, this). |
|
Hasher |
putShort(short s)
Puts a short into this sink. |
|
Hasher |
putString(java.lang.CharSequence charSequence)
Equivalent to processing each char value in the CharSequence, in order. |
|
Hasher |
putString(java.lang.CharSequence charSequence,
java.nio.charset.Charset charset)
Equivalent to putBytes(charSequence.toString().getBytes(charset)). |
|
| Method Detail |
|---|
Hasher putByte(byte b)
PrimitiveSink
putByte in interface PrimitiveSinkb - a byte
Hasher putBytes(byte[] bytes)
PrimitiveSink
putBytes in interface PrimitiveSinkbytes - a byte array
Hasher putBytes(byte[] bytes,
int off,
int len)
PrimitiveSinkbytes[off] is the first byte written,
bytes[off + len - 1] is the last.
putBytes in interface PrimitiveSinkbytes - a byte arrayoff - the start offset in the arraylen - the number of bytes to write
Hasher putShort(short s)
PrimitiveSink
putShort in interface PrimitiveSinkHasher putInt(int i)
PrimitiveSink
putInt in interface PrimitiveSinkHasher putLong(long l)
PrimitiveSink
putLong in interface PrimitiveSinkHasher putFloat(float f)
putInt(Float.floatToRawIntBits(f)).
putFloat in interface PrimitiveSinkHasher putDouble(double d)
putLong(Double.doubleToRawLongBits(d)).
putDouble in interface PrimitiveSinkHasher putBoolean(boolean b)
putByte(b ? (byte) 1 : (byte) 0).
putBoolean in interface PrimitiveSinkHasher putChar(char c)
PrimitiveSink
putChar in interface PrimitiveSinkHasher putString(java.lang.CharSequence charSequence)
char value in the CharSequence, in order.
The input must not be updated while this method is in progress.
putString in interface PrimitiveSink
Hasher putString(java.lang.CharSequence charSequence,
java.nio.charset.Charset charset)
putBytes(charSequence.toString().getBytes(charset)).
putString in interface PrimitiveSink
<T> Hasher putObject(T instance,
Funnel<? super T> funnel)
funnel.funnel(object, this).
HashCode hash()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||