>
> A few obvious problems with this code:
> 1. Removing the elements already processed from the bag requires
> clearing and rewriting the entire bag. This is O(n^2) in the number of
> input trades.
>
why it's not O(2 * n) to clearing and rewriting trade state?
> public interface SortedMultimapState<K, V> extends State {
> // Add a value to the map.
> void put(K key, V value);
> // Get all values for a given key.
> ReadableState<Iterable<V>> get(K key);
> // Return all entries in the map.
> ReadableState<Iterable<KV<K, V>>> allEntries();
> // Return all entries in the map with keys <= limit. returned elements
> are sorted by the key.
> ReadableState<Iterable<KV<K, V>>> entriesUntil(K limit);
>
// Remove all values with the given key;
> void remove(K key);
> // Remove all entries in the map with keys <= limit.
> void removeUntil(K limit);
>
Will removeUntilExcl(K limit) also useful? It will remove all entries in
the map with keys < limit.
> Runners will sort based on the encoded value of the key. In order to make
> this easier for users, I propose that we introduce a new tag on Coders
> *PreservesOrder*. A Coder that contains this tag guarantees that the
> encoded value preserves the same ordering as the base Java type.
>
Could you clarify what is "encoded value preserves the same ordering as
the base Java type"?
-Rui