tdulik

MyHashTable

Oct 28th, 2020
617
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package histogram_words;
  2.  
  3. class ListNode {
  4.     String word;
  5.     int occurences;
  6.     ListNode next;
  7.     public ListNode(String w, int o, ListNode n) {
  8.         word=w; occurences=o; next=n;
  9.     }
  10. }
  11.  
  12. public class MyHashTable {
  13.     ListNode buckets[];
  14.     int length;
  15.     public MyHashTable(int size) {
  16.         buckets=new ListNode[size];
  17.     }
  18.     public void add(String word, int occurences) {
  19.         int index=myHash(word);
  20.         ListNode ptr=buckets[index];
  21.         while (ptr!=null) {
  22.             if (ptr.word.equals(word)) {
  23.                 ptr.occurences = occurences;
  24.                 return;
  25.             }
  26.             ptr=ptr.next;
  27.         }
  28.         ListNode newNode=new ListNode(word, 1, buckets[index]);
  29.         buckets[index]=newNode;
  30.     }
  31.     public int myHash(String word) {
  32.         int index=word.hashCode() % buckets.length;
  33.         if (index<0) return -index;
  34.         else return index;
  35.        
  36.     }
  37.     public int get(String word) {
  38.         int index=myHash(word);
  39.         ListNode ptr=buckets[index];
  40.         while (ptr!=null) {
  41.             if (ptr.word.equals(word)) {
  42.                 return ptr.occurences;
  43.             }
  44.             ptr=ptr.next;
  45.         }      
  46.         return 0;
  47.     }
  48.     public String toString() {
  49.         String result="";
  50.         for (int i=0; i<buckets.length; i++) {
  51.             ListNode ptr=buckets[i];
  52.             while (ptr!=null) {
  53.                 result += ptr.word +": "+ptr.occurences+"\n";
  54.                 ptr=ptr.next;
  55.             }      
  56.         }
  57.         return result;
  58.     }
  59. }
  60.  
RAW Paste Data