void insert(String key, Object o); Object lookup(String key); void remove(String key);
int hash(String key)
T[hash(key)]
int hash(int key, int N)
{
return Math.abs(key) % N;
}
static final int shift = 6; static final int mask = ~0 >> (32-shift); // only lower 6 bits on int r = 0; for (int i=0; i<value.length(); i++) r = (r << shift) | (value.charAt(i) & mask); return Math.abs(r) % N;
class ChainedHashTable
{
int hash(String value, int N) // as given above
static class ListNode
{
String key;
Object info;
ListNode next;
ListNode(String k, Object ob, ListNode n)
{
key = k; info = ob; next = n;
}
static ListNode find(String k, ListNode l);
static ListNode remove(String k, ListNode l);
}
ListNode [] T;
ChainedHashTable(int numberOfSlots);
void insert(String key, Object info);
Object lookup(String key);
void remove(String key);
String toString();
}