按降序对 int 数组进行排序会给出"method not applicable for arguments"



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

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

但是我收到此错误:

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

如果你看一下数组的javadoc,你会发现只有sortcomparator作为第二个参数的方法有:

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) 签名的方法

最新更新