public class AList { private ANode head = null; 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; } 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() { ANode n = head; int length = 0; while (n!=null) { n = n.getLink(); length++; } return length; } }