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;
}
}