Maintaining sort order
If your application has collections that are always sorted, then you need a way to maintain that sort order. This means that once you add or change values in a collection, you have to make sure that the collection is still in the order that you expected.
Finding the insertion index
Let's say that you want to add a value to a list that's already sorted. Using push() will insert the value at the end of the list, and this isn't what you want. The insert() method can put the value at a particular index—you just have to figure out which index to use to keep the list sorted:
const sortedInsert = (item, list) => {
let low = 0;
let high = list.count();
while (low < high) {
const mid = (low + high) >>> 1;
if (item > list.get(mid)) {
low = mid + 1;
} else {
high = mid;
}
}
return list.insert(low, item);
};The sortedIndex() function takes a value and a list into which to insert the value as arguments. It then does a simple...