Java Arrays.sort()也没有找到合适的方法来排序。

问题描述 投票:-1回答:1

我有一个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);
        });

我想根据数字与中位数的绝对差异进行排序。

java arrays sorting lambda comparator
1个回答
1
投票

尝试使用 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();
© www.soinside.com 2019 - 2024. All rights reserved.