В текущей реализации я использую массив целых чисел Integer [], чтобы использовать внешний компаратор. Порядок не «естественный», а определенный внешне.
Arrays.parallelSort(Integer[] array, Comparator<T> cmp);
Есть ли способ использовать parallelSort с массивом целых чисел int [] и определенным пользователем компаратором?
вместо этого что-то вроде:
Arrays.parallelSort(int[] array, IntComparator cmp);
Проблема в производительности (подумайте, если у вас 10 миллионов целых)
Вот почему я спрашиваю ... Я НЕ может быть примитивным типом
Один подход, преобразование int[] в Integer[].Arrays.stream(arr).boxed().sort(cmparator).maptoInt(x -> x).toArray()
Вы используете Integer [] или int []?
Я использую Integer [], но хотел бы использовать parallelSort с int []




Если вы хотите использовать собственный компаратор со стандартными методами Java SE Arrays.parallelSort(...) для массива целых чисел, то это должен быть Integer[], а не int[].
Вот пример (непроверенный / на основе https://stackoverflow.com/a/33045466/139985)
int[] ia = {99, 11, 7, 21, 4, 2};
ia = Arrays.stream(ia).
boxed().
parallel().
sorted((a, b) -> b.compareTo(a)). // sort descending
mapToInt(i -> i).
toArray();
который преобразуется из int[] в Integer и обратно с использованием потоков.
Существуют и другие альтернативы с использованием сторонних библиотек:
К сожалению, ни один из приведенных выше ответов не использует параллельную сортировку, но могут быть альтернативы.
Это как-то то, что мы делаем :-)
Что ж ... альтернативы нет, если только вы не хотите искать неясную стороннюю библиотеку, которая выполняет параллельную сортировку int[] с помощью специального «компаратора».
java не поддерживает настраиваемый компаратор в примитивном массиве.