Ho un flusso di articoli non ordinati e un flusso di comparatori. Voglio applicare tutti i comparatori sullo stream usando "thenComparing" (Multisort) Esiste un modo più elegante del seguente codice per ottenere questo?Come fare catena e applicare un flusso di comparatori?
Stream unsorted = ...;
Stream<Comparator> comparators = ...;
Comparator compareFunc = comparators.reduce(null, (a, b) -> {
if(a == null) {
return b;
}else {
return a.thenComparing(b);
}
});
Stream result = unsorted.sorted(compareFunc);
Vorrei evitare il parametro null di riduzione e l'istruzione if (a == null) – jack
Sarebbe probabilmente leggermente più pulito se si utilizza un comparatore di base che restituisce sempre 0 invece di 'null'. Ciò rimuoverebbe il null e il ramo. –
@mark sì che semplifica il codice compareFunc = comparators.reduce ((a, b) -> 0, (a, b) -> a.thenComparing (b)); thanxs – jack