import maps.Map.Entry; public class HashableString implements Hashable { String s; private static final int SHIFT=33; public HashableString(String st){ s=st; } public String getS() { return s; } public void setS(String s) { this.s = s; } /** * accumulator for generating hash value associated with a string * for each character, multiply current accumulator by SHIFT, add value of * character, take the mod n * * @param n size of hash table * @return value between 0 .. n-1 */ public int hashCode(int n) { int myVal=0; int len=s.length(); for (int i = 0; i < len; i++) myVal = (SHIFT * myVal + s.charAt(i)) % n; return myVal; } public String toString(){ return s; } /**make two of these objects equal if they contain the same string*/ public boolean equals(Object o){ if(o==null)return false; else { if(getClass()!=o.getClass()) return false; else return ( ((HashableString) o).getS().equals(s)); } } }