我有一个int[]数组。我试图用它的中值进行排序。我先对它进行排序,计算出它的中值,然后用lambda表达式作为比较器再次进行排序。
但是编译器给出了一个错误。
no suitable method found for sort(int[],(int a, in[...]n); })
Arrays.sort(arrCopy, (int a, int b) -> {
我的代码
Arrays.sort(arr);
int median = arr[(arr.length - 1) / 2];
Arrays.sort(arrCopy, (int a, int b) -> {
return (Math.abs(a - median) == Math.abs(b - median)) ? Math.abs(a - b) : Math.abs(a - median) - Math.abs(b - median);
});
我想根据数字与中位数的绝对差异进行排序。
尝试使用 IntStream
并从int值数组中建立流。
int[] result = IntStream.of(arr).boxed().sorted((a, b) -> {
return (Math.abs(a - median) == Math.abs(b - median)) ? Math.abs(a - b)
: Math.abs(a - median) - Math.abs(b - median);
}).mapToInt(i -> i.intValue()).toArray();