Aktualizacja jest stosunkowo łatwa w Java 8 przy użyciu API strumieni.
public static int[] sortedPermutation(final int[] items) {
return IntStream.range(0, items.length)
.mapToObj(value -> Integer.valueOf(value))
.sorted((i1, i2) -> Integer.compare(items[i1], items[i2]))
.mapToInt(value -> value.intValue())
.toArray();
}
To nieco niestety wymaga boks i unboxing krok dla indeksów, ponieważ nie ma .sorted(IntComparator)
metoda na IntStream
lub nawet IntComparator
funkcjonalny interfejs dla tej sprawy.
Uogólniając Do List
z Comparable
obiektów jest dość prosta:
public static <K extends Comparable <? super K>> int[] sortedPermutation(final List<K> items) {
return IntStream.range(0, items.size())
.mapToObj(value -> Integer.valueOf(value))
.sorted((i1, i2) -> items.get(i1).compareTo(items.get(i2)))
.mapToInt(value -> value.intValue())
.toArray();
}
Guava-er bardzo fajne! –
W pewnym momencie powstrzymałem się od używania Guawy, będę o tym wiedział;) –