sclass SortedListBasedMap extends CompactAbstractMap { O[] entries; // key, value, ... with keys being sorted *() {} *(Map map) { LPair l = pairsSortedByA(mapToPairs(map)); int n = l(l); entries = new O[n*2]; for i to n: { entries[i*2] = l[i].a; entries[i*2+1] = l[i].b; } } public int size() { ret l(entries)/2; } public Set> entrySet() { ret toLinkedHashMap().entrySet(); } int find(O o) { generalizedBinarySearch(entries) if (entries != null) for (int i = 0; i < entries.length; i += 2) if (eq(entries[i], o)) ret i; ret -1; } public bool containsKey(O o) { ret find(o) >= 0; } @Override public B get(O o) { int i = find(o); ret i >= 0 ? (B) entries[i+1] : null; } }