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.