3

我正在尝试使用以下代码在 Java 中按降序对数组进行排序:

for(int i = 0; i < arr.length; i++) {
   Comparator comparator = Collections.reverseOrder();
   Arrays.sort(arr,comparator);
}

但我得到这个错误:

Arrays 类型中的方法 sort(int[]) 不适用于参数 (int[], Comparator)

4

5 回答 5

9

如果您查看Arrays 的 javadoc,您会发现唯一sort将 acomparator作为第二个参数的方法是:

sort(T[] a, Comparator<? super T> c)
sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

在你的情况下,int[]is not a T[]( Integer[]would be) 所以你不能应用这些方法。

你有(至少)2个选项:

  • 按升序排序并反转数组
  • 将数组转换为 anInteger[]并使用上述方法
于 2012-09-29T17:04:34.873 回答
1

目前尚不清楚您为什么要尝试循环,但是在原始Arrays.sort数组上运行的方法不允许指定自定义比较器。

最简单的方法是对数组进行排序然后反转。我无法立即找到一种reverse方法,int[]但很容易编写自己的方法。

于 2012-09-29T17:04:25.000 回答
0

Arrays 类中唯一接受比较器的排序方法要求您提供对象数组。类中没有带有 sort(int[], Comparator) 签名的方法

于 2012-09-29T17:07:23.593 回答
0

Arrays.sort(arr,comparator);不适用于原语。arr必须是对象数组。

于 2012-09-29T17:05:51.053 回答
0

在定义数组时更改 int Integer。更改int arr[]={};Integer arr[]={}; This 将使您的代码运行

于 2021-12-07T14:20:26.450 回答