|
|
|
|
|
by jargonjustin
4512 days ago
|
|
Java's Comparator type is more general (you don't necessarily need to project the type for comparison) and an existing abstraction. It's not hard to introduce a combinator to transform the representation as a library, as in: countries.sorted(by(x -> x.population)).limit(3).map(x -> x.name)
where `by` looks something like: <S, T> Comparator<T> by(Projection<S, T> projection);
interface Projection<S, T> {
Comparable<S> project(T value);
}
|
|
It's still ugly, and would prevent e.g. a radix sort being used when projecting an integer as the sort key, or American flag sort for strings.