Le récent [Sterling Sort](https://qiita.com/tags/Sterling Sort), L'implémentation java publiée utilise une boucle for qui n'est pas une extension, Je pensais que c'était une chose préhistorique parce que je ne pouvais pas remettre le comparateur, alors j'ai commencé à l'écrire moi-même. J'ai eu un mauvais tour en chemin et j'ai pensé à essayer de lier non seulement pour mais aussi si, mais cela s'est avéré être un code étrange.
Pour le moment, il sert également de service commémoratif
public static <T extends Comparable<? super T>> List<T> stalinSort(List<T> origin) {
return stalinSort(origin, Comparator.naturalOrder());
}
public static <T> List<T> stalinSort(List<T> origin, Comparator<? super T> comparator) {
return origin.stream().reduce(new LinkedList<T>(),
(prev, current) -> Comparator.nullsFirst(comparator).compare(prev.peekLast(), current) <= 0
&& prev.add(current) ? prev : prev,
(a, b) -> {
throw new UnsupportedOperationException();
});
}
Peut-être que ça marche.
Recommended Posts