Java tutorial
// : c11:SlowMap.java // A Map implemented with ArrayLists. // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. import java.util.AbstractMap; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class SlowMap extends AbstractMap { private List keys = new ArrayList(), values = new ArrayList(); public Object put(Object key, Object value) { Object result = get(key); if (!keys.contains(key)) { keys.add(key); values.add(value); } else values.set(keys.indexOf(key), value); return result; } public Object get(Object key) { if (!keys.contains(key)) return null; return values.get(keys.indexOf(key)); } public Set entrySet() { Set entries = new HashSet(); Iterator ki = keys.iterator(), vi = values.iterator(); while (ki.hasNext()) entries.add(new MPair(ki.next(), vi.next())); return entries; } public String toString() { StringBuffer s = new StringBuffer("{"); Iterator ki = keys.iterator(), vi = values.iterator(); while (ki.hasNext()) { s.append(ki.next() + "=" + vi.next()); if (ki.hasNext()) s.append(", "); } s.append("}"); return s.toString(); } public static void main(String[] args) { SlowMap m = new SlowMap(); m.put("Adobe", "Mountain View, CA"); m.put("IBM", "White Plains, NY"); m.put("Learning Tree", "Los Angeles, CA"); m.put("Microsoft", "Redmond, WA"); m.put("Netscape", "Mountain View, CA"); m.put("O'Reilly", "Sebastopol, CA"); m.put("Sun", "Mountain View, CA"); System.out.println(m); } } ///:~ class MPair implements Entry, Comparable { Object key, value; MPair(Object k, Object v) { key = k; value = v; } public Object getKey() { return key; } public Object getValue() { return value; } public Object setValue(Object v) { Object result = value; value = v; return result; } public boolean equals(Object o) { return key.equals(((MPair) o).key); } public int compareTo(Object rv) { return ((Comparable) key).compareTo(((MPair) rv).key); } } ///:~