Reputation: 8903
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:
class Node {
private int data;
private String key;
private Node next;
// Other helper methods
}
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.
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
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