有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java按降序对整型数组进行排序给出了“方法不适用于参数”

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

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

但我得到了这个错误:

The method sort(int[]) in the type Arrays is not applicable for the arguments (int[], Comparator)


共 (5) 个答案

  1. # 1 楼答案

    如果查看javadoc of Arrays,您将看到唯一将sort作为第二个参数的comparator方法是:

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

    在您的情况下,int[]不是T[]Integer[]将是),因此您无法应用这些方法

    您有(至少)2个选项:

    • 按升序和reverse the array排序
    • 将数组转换为Integer[]并使用上述方法
  2. # 2 楼答案

    不清楚为什么要尝试循环,但是在基元数组上操作的Arrays.sort方法不允许指定自定义比较器

    最简单的方法是排序,然后反转数组。我不能马上找到一个reverse方法,它需要一个int[]但是它很容易编写自己的方法

  3. # 3 楼答案

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

  4. # 4 楼答案

    Arrays.sort(arr,comparator);在原语上不起作用。arr必须是对象数组

  5. # 5 楼答案

    定义数组时更改int整数。 将int arr[]={};更改为Integer arr[]={}; 这将使您的代码能够运行