public abstract class Dictionary implements Map { public abstract void insert(K k, D d); public abstract void delete(K k); public abstract D find(K k); public abstract boolean iselement(K k); public abstract Iterator iterator(); public boolean isempty() { return size()==0; } public int size() { Iterator it; int size = 0; for(it=iterator(); it.more(); it.step()) size++; return size; } public SimpleIterator simpleiterator() { return new SimpleIterator(iterator()); } public Array array() { int i; Array a = new Array(); SimpleIterator it; for(i=0, it=simpleiterator(); it.more(); i++, it.step()) a.set(i, it.key()); return a; } public void print() { Iterator i; for(i=iterator(); i.more(); i.step()) System.out.println(i.key()+" : "+i.data()); } public String sanity() { Iterator i; int s=0; String t = ""; for(i=iterator(); i.more(); i.step()) { s++; if(!iselement(i.key())) t += ""+i.key()+" not iselement() "; if(i.data()==null) t += "i.data()==null for i.key()="+i.key(); if(!i.data().equals(find(i.key()))) t += "i.data() != find(i.key())"; if(!t.equals("")) return t; } if(s!=size()) return "size mismatch: "+s+" vs. "+size(); return ""; } }