CuriousMind
CuriousMind

Reputation: 8903

Widely used hashing algorithm in Java for implementing Hash tables?

I am implementing a basic HashTable data structure in Java without using collection framework and Arrays.

I intend to use individual nodes whose reference I would store in an array.

I am doing it this way:

Define a Node:

class Node {

    private int data;
    private String key;
    private Node next;
    // Other helper methods
}

Create an array which would hold reference to pre-created Node objects:

public class MyHashTable {

    private Node[] nodeArray = new Node[100];

    public MyHashTable() {
        for(int i=0 ; i<100; i++) {
            nodeArray[i] = new Node();
        }
    }

    private int getIndex(String key) {
        long hashCode = key.hashCode();
        return  (int )hashCode%100;
    }

    // Other helper methods...
}

For getting the hash-code, I am using the Java's inbuilt method -> hashCode().

It seems to be working fine, however for the case in which the key is "second", it returns a negative hash code and because of which the programs terminates with an exception.

My question is:

Is there any standard hashing algorithm which I can use for hashing and which is widely used? I am writing for learning purpose.

Upvotes: 0

Views: 479

Answers (1)

Thomas Mueller
Thomas Mueller

Reputation: 50097

You could use for example:

@Override
public int hashCode() {
    return 31 * data + ((key == null) ? 0 : key.hashCode());
}

But you also need to implement equals.

Upvotes: 1

Related Questions