public class Entry { private int key; private int value; private Entry next; public Entry(int k, int v) { key = k; value = v; } public int getKey() { return key; } public int getValue() { return value; } public Entry getNext() { return next; } public void setNext(Entry n) { next = n; } public String toString() { return "["+key+", "+value+"]"; } }
public class Hashtable { private Entry [] bucket; private int bucketSize; private int count; public Hashtable() { bucketSize = 10; bucket = new Entry[bucketSize]; count++; } // O(1) public void put(int k, int v) { Entry e = new Entry(k, v); if(bucket[hashCode(k)] == null) bucket[hashCode(k)] = e; else { e.setNext(bucket[hashCode(k)]); bucket[hashCode(k)] = e; } } // O(1) public int hashCode(int k) { return k%bucketSize; } // O(n) public int get(int k) { Entry walker = bucket[hashCode(k)]; if(walker == null) return -1; while(walker != null) { if(k == walker.getKey()) return walker.getValue(); } return -1; } // O(n) public String toString() { String s = ""; for(int i = 0; i < bucketSize; i++) { s = s+"Bucket "+i+": "; Entry walker; walker = bucket[i]; while(walker != null) { s=s+walker.toString()+" "; walker = walker.getNext(); } s = s+"\n"; } return s; } }
public class HashtableTest { public static void main(String args[]) { Hashtable t = new Hashtable(); t.put(11, 1); t.put(21, 2); t.put(7, 3); t.put(34, 4); System.out.println(t); System.out.println(t.get(21)); } }