Node
package DataStructures.HashMap.Hashing; class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } }
LinkedList
package DataStructures.HashMap.Hashing; class LinkedList { private Node Head; private int size; public LinkedList() { Head = null; size = 0; } public void insert(int data) { Node temp = Head; Node newnode = new Node(data); size++; if(Head == null) { Head = newnode; } else { newnode.next = Head; Head = newnode; } } public void delete(int data) { if(size == 0) { System.out.println("UnderFlow!"); return; } else { Node curr = Head; if (curr.data == data) { Head = curr.next; size--; return; } else { while(curr.next.next != null) { if(curr.next.data == data){ curr.next = curr.next.next; return; } } System.out.println("Key not Found"); } } } public void display() { Node temp = Head; while(temp != null) { System.out.printf("%d ",temp.data); temp = temp.next; } System.out.println(); } }
HashMap
package DataStructures.HashMap.Hashing; class HashMap { private int hsize; private LinkedList[] buckets; public HashMap(int hsize) { buckets = new LinkedList[hsize]; for (int i = 0; i < hsize; i++) { buckets[i] = new LinkedList(); // Java requires explicit initialisaton of each object } this.hsize = hsize; } public int hashing(int key) { int hash = key % hsize; if (hash < 0) hash += hsize; return hash; } public void insertHash(int key) { int hash = hashing(key); buckets[hash].insert(key); } public void deleteHash(int key) { int hash = hashing(key); buckets[hash].delete(key); } public void displayHashtable() { for (int i = 0; i < hsize; i++) { System.out.printf("Bucket %d :", i); buckets[i].display(); } } }