It isn't always easy to find a good hash function; statistical tests are needed to ensure that the distribution of values is good. Java provides the function hashCode() that can be used for strings.
public static int jenkinshash(String key) {
int hash = 0;
for (int i = 0; i < key.length(); i++) {
hash += key.charAt(i);
hash += (hash << 10);
hash ^= (hash >> 6); }
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash; }
public static int hashfix(int hashcode, int size) {
hashcode %= size;
if ( hashcode < 0 ) hashcode += size;
return hashcode; }
The function jenkinshash is by Bob Jenkins, Dr. Dobbs Journal, 1997; this returns a 32-bit integer that could be negative. The function hashfix makes a hash code positive and returns the hash code modulo the table size, which should be prime.
Contents    Page-10    Prev    Next    Page+10    Index