## org.apache.hadoop.util.hash
Class JenkinsHash

    java.lang.Object
      org.apache.hadoop.util.hash.Hash
          org.apache.hadoop.util.hash.JenkinsHash

    public class JenkinsHash

extends Hash

Produces 32-bit hash for hash table lookup.

    lookup3.c, by Bob Jenkins, May 2006, Public Domain.

     You can use this free for any purpose.  It's in the public domain.
     It has no warranty.

See Also:
  lookup3.c, Hash Functions (and how this function compares to others such as CRC, MD?, etc, Has update on the Dr. Dobbs Article

Field Summary

Fields inherited from class org.apache.hadoop.util.hash.Hash
`INVALID_HASH, JENKINS_HASH, MURMUR_HASH`

Constructor Summary
`JenkinsHash()`

Method Summary
`static Hash` `getInstance()`
`int` `hash(byte[] key, int nbytes, int initval)` taken from hashlittle() -- hash a variable-length key into a 32-bit value
`static void` `main(String[] args)` Compute the hash of the specified file

Methods inherited from class org.apache.hadoop.util.hash.Hash
`getHashType, getInstance, getInstance, hash, hash, parseHashType`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JenkinsHash

    public JenkinsHash()

Method Detail

### getInstance

    public static Hash getInstance()

### hash

    public int hash(byte[] key,
                    int nbytes,
                    int initval)

  taken from hashlittle() -- hash a variable-length key into a 32-bit value

  Specified by:
    `hash` in class `Hash`
  Parameters:
    `key` - the key (the unaligned variable-length array of bytes)
    `nbytes` - number of bytes to include in hash
    `initval` - can be any integer value
  Returns:
    a 32-bit value. Every bit of the key affects every bit of the return value. Two keys differing by one or two bits will have totally different hash values.

    The best hash table sizes are powers of 2. There is no need to do mod a prime (mod is sooo slow!). If you need less than 32 bits, use a bitmask. For example, if you need only 10 bits, do `h = (h & hashmask(10));` In which case, the hash table should have hashsize(10) elements.

    If you are hashing n strings byte[][] k, do it like this: for (int i = 0, h = 0; i < n; ++i) h = hash( k[i], h);

    By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this code any way you wish, private, educational, or commercial. It's free.

    Use for hash table lookup, or anything where one collision in 2^^32 is acceptable. Do NOT use for cryptographic purposes.

### main

    public static void main(String[] args)
                     throws IOException

  Compute the hash of the specified file

  Parameters:
    `args` - name of file to compute hash of.
  Throws:
    `IOException`

Copyright © 2009 The Apache Software Foundation