我正在尝试使用以下代码在 Java 中按降序对数组进行排序:
for(int i = 0; i < arr.length; i++) {
Comparator comparator = Collections.reverseOrder();
Arrays.sort(arr,comparator);
}
但是我收到此错误:
数组类型中的 sort(int[]) 方法不适用于参数 (int[], Comparator)
如果你看一下数组的javadoc,你会发现只有sort
将comparator
作为第二个参数的方法有:
sort(T[] a, Comparator<? super T> c)
sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
在您的情况下,int[]
不是T[]
(Integer[]
会),因此您无法应用这些方法。
您(至少)有 2 个选项:
- 按升序排序并反转数组
- 将数组转换为
Integer[]
并使用上述方法
目前尚不清楚为什么要尝试循环,但是在基元数组上运行的Arrays.sort
方法不允许指定自定义比较器。
最简单的方法是对数组进行排序,然后反转。我无法立即找到一种需要int[]
的reverse
方法,但编写自己的方法很容易。
在定义数组时更改 int Integer。将int arr[]={};
更改为Integer arr[]={};
这将使你的代码运行
Arrays.sort(arr,comparator);
不适用于原语。arr
必须是对象数组。
在 Arrays 类中接受比较器的唯一排序方法要求您提供对象数组。 类中没有具有 sort(int[], Comparator) 签名的方法