Почему вы должны использовать Arrays.sort()
вообще?
index = 0; // declared as class variable
int[] arr = { 5, 3, 7, 8, 1, 4, 6, 9 };
лямбда-повторное использование старого массива:
IntStream.range( 0, arr.length ).boxed().map( i -> arr[i] )
.sorted( (i1, i2) -> Integer.compare( i1, i2 ) ).forEach( i -> arr[index++] = i ); // arr == [1, 3, 4, 5, 6, 7, 8, 9]
… Для естественного порядка сортировки даже бокс не нужен:
IntStream.range( 0, arr.length ).map( i -> arr[i] )
.sorted().forEach( i -> arr[index++] = i ); // arr == [1, 3, 4, 5, 6, 7, 8, 9]
Оба решения отображают содержимое массива на соответствующий ему индекс.Эта конструкция была выбрана, потому что результирующий поток имеет функцию sort()
, которая принимает компаратор в качестве аргумента.После сортировки значения записываются обратно в arr
в цикле forEach
.