使用以下代码对数组进行排序时出现错误

Tos*_*ade 1 java arrays sorting comparator

我能够为此获得输出:

int arr[][]={{1,2},{2,3},{3,4},{1,3}};
Arrays.sort(arr,(a,b)->(b[0]-a[0]));
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

int arr[]={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
Run Code Online (Sandbox Code Playgroud)
Error:     method Arrays.<T#1>sort(T#1[],Comparator<? super T#1>) is not applicable
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

Era*_*ran 5

没有任何变体Arrays.sort()接受 anint[]和 a Comparator,这并不奇怪,因为您不能定义 a Comparator<int>(通用类型参数必须是引用类型)。

如果您将数组更改为Integer[],它将起作用:

Integer[] arr={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
Run Code Online (Sandbox Code Playgroud)

您的第一个代码段有效,因为您的第一个(2D)数组的元素类型是int[](array of ints),而数组是引用类型。因此它符合public static <T> void sort(T[] a, Comparator<? super T> c)方法的签名。