public class SizedAList { private ANode head = null; private int size = 0; public String associate(String key, String value) { ANode n = nodeLookup(key); String oldValue; if (n != null) { oldValue = n.getValue(); n.setValue(value); } else { n = new ANode(key, value, head); head = n; oldValue = null; size++; } return oldValue; } public String find(String key) { ANode n = nodeLookup(key); return (n == null) ? null : n.getValue(); } private ANode nodeLookup(String key) { ANode n = head; while (n!=null && !n.getKey().equals(key)) { n = n.getLink(); } return n; } public int size() { return size; } }