Sıralanmamış ürün akışı ve bir karşılaştırıcı akışı var. Tüm karşılaştırıcıları "thenComparing" (Multisort) kullanarak akışa uygulamak istiyorum. Bunu yapmak için aşağıdaki koddan daha zarif bir yol var mı?Bir karşılaştırıcı akışı nasıl oluşturulur ve uygulanır?
Comparator compareFunc = comparators.reduce((a, b) -> 0, Comparator::thenComparing);
Veya bunun yerine Holger gelen biraz çalmak:
Optional<Comparator> compareFunc = comparators.reduce(Comparator::thenComparing);
Stream<?> result = compareFunc.isPresent() ? result.sorted(compareFunc.get())
: unsorted;
Azaltılmış null parametresinden ve if (a == null) ifadesinden kaçınmak isterim – jack
Her zaman "null" yerine 0 döndüren bir temel karşılaştırıcı kullandıysanız, muhtemelen biraz daha temiz olabilir. Bu null ve dalı kaldırırdı. –
@mark yep kodunu basitleştiren compareFunc = comparators.reduce ((a, b) -> 0, (a, b) -> a.thenComparing (b)); thanxs – jack