public class JenkinsHash extends Object
| Constructor and Description |
|---|
JenkinsHash() |
| Modifier and Type | Method and Description |
|---|---|
static JenkinsHash |
getInstance() |
int |
hash(byte[] bytes)
Calculate a hash using all bytes from the input argument, and
a seed of -1.
|
int |
hash(byte[] bytes,
int initVal)
Calculate a hash using all bytes from the input argument, and
a seed of -1.
|
int |
hash(byte[] key,
int nbytes,
int initval)
taken from hashlittle() -- hash a variable-length key into a 32-bit value
|
public JenkinsHash()
public static JenkinsHash getInstance()
public int hash(byte[] bytes)
bytes - input bytespublic int hash(byte[] bytes, int initVal)
bytes - input bytespublic int hash(byte[] key, int nbytes, int initval)
key - the key (the unaligned variable-length array of bytes)nbytes - number of bytes to include in hashinitval - can be any integer value
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.
Copyright © 2005–2020 The Apache Software Foundation. All rights reserved.