Class AbstractStreamingHashFunction

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  AbstractStreamingHashFunction.AbstractStreamingHasher
      A convenience base class for implementors of Hasher; handles accumulating data until an entire "chunk" (of implementation-dependent length) is ready to be hashed.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      HashCode hashBytes​(byte[] input)
      Shortcut for newHasher().putBytes(input).hash().
      HashCode hashBytes​(byte[] input, int off, int len)
      Shortcut for newHasher().putBytes(input, off, len).hash().
      HashCode hashInt​(int input)
      Shortcut for newHasher().putInt(input).hash(); returns the hash code for the given int value, interpreted in little-endian byte order.
      HashCode hashLong​(long input)
      Shortcut for newHasher().putLong(input).hash(); returns the hash code for the given long value, interpreted in little-endian byte order.
      <T> HashCode hashObject​(T instance, Funnel<? super T> funnel)
      Shortcut for newHasher().putObject(instance, funnel).hash().
      HashCode hashString​(java.lang.CharSequence input, java.nio.charset.Charset charset)
      Shortcut for newHasher().putString(input, charset).hash().
      HashCode hashUnencodedChars​(java.lang.CharSequence input)
      Shortcut for newHasher().putUnencodedChars(input).hash().
      Hasher newHasher​(int expectedInputSize)
      Begins a new hash code computation as HashFunction.newHasher(), but provides a hint of the expected size of the input (in bytes).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AbstractStreamingHashFunction

        AbstractStreamingHashFunction()
    • Method Detail

      • hashObject

        public <T> HashCode hashObject​(T instance,
                                       Funnel<? super T> funnel)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putObject(instance, funnel).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse.
        Specified by:
        hashObject in interface HashFunction
      • hashUnencodedChars

        public HashCode hashUnencodedChars​(java.lang.CharSequence input)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putUnencodedChars(input).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse. Note that no character encoding is performed; the low byte and high byte of each char are hashed directly (in that order).

        Warning: This method will produce different output than most other languages do when running the same hash function on the equivalent input. For cross-language compatibility, use HashFunction.hashString(java.lang.CharSequence, java.nio.charset.Charset), usually with a charset of UTF-8. For other use cases, use hashUnencodedChars.

        Specified by:
        hashUnencodedChars in interface HashFunction
      • hashString

        public HashCode hashString​(java.lang.CharSequence input,
                                   java.nio.charset.Charset charset)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putString(input, charset).hash(). Characters are encoded using the given Charset. The implementation might perform better than its longhand equivalent, but should not perform worse.

        Warning: This method, which reencodes the input before hashing it, is useful only for cross-language compatibility. For other use cases, prefer HashFunction.hashUnencodedChars(java.lang.CharSequence), which is faster, produces the same output across Java releases, and hashes every char in the input, even if some are invalid.

        Specified by:
        hashString in interface HashFunction
      • hashInt

        public HashCode hashInt​(int input)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putInt(input).hash(); returns the hash code for the given int value, interpreted in little-endian byte order. The implementation might perform better than its longhand equivalent, but should not perform worse.
        Specified by:
        hashInt in interface HashFunction
      • hashLong

        public HashCode hashLong​(long input)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putLong(input).hash(); returns the hash code for the given long value, interpreted in little-endian byte order. The implementation might perform better than its longhand equivalent, but should not perform worse.
        Specified by:
        hashLong in interface HashFunction
      • hashBytes

        public HashCode hashBytes​(byte[] input)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putBytes(input).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse.
        Specified by:
        hashBytes in interface HashFunction
      • hashBytes

        public HashCode hashBytes​(byte[] input,
                                  int off,
                                  int len)
        Description copied from interface: HashFunction
        Shortcut for newHasher().putBytes(input, off, len).hash(). The implementation might perform better than its longhand equivalent, but should not perform worse.
        Specified by:
        hashBytes in interface HashFunction
      • newHasher

        public Hasher newHasher​(int expectedInputSize)
        Description copied from interface: HashFunction
        Begins a new hash code computation as HashFunction.newHasher(), but provides a hint of the expected size of the input (in bytes). This is only important for non-streaming hash functions (hash functions that need to buffer their whole input before processing any of it).
        Specified by:
        newHasher in interface HashFunction