使用以下代码对数组进行排序时出现错误
I'm getting an error while sorting an array with the following code
我可以得到输出:
int arr[][]={{1,2},{2,3},{3,4},{1,3}};
Arrays.sort(arr,(a,b)->(b[0]-a[0]));
但是它显示错误:
int arr[]={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
Error: method Arrays.<T#1>sort(T#1[],Comparator<? super T#1>) is not applicable
我在这里错过了什么?
Arrays.sort()
没有接受 int[]
和 Comparator
的变体,这并不奇怪,因为您不能定义 Comparator<int>
(通用类型参数必须是引用类型)。
如果您将数组更改为 Integer[]
,它将起作用:
Integer[] arr={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
您的第一个代码片段有效,因为您的第一个 (2D) 数组的元素类型是 int[]
(int
的数组),并且数组是引用类型。因此它符合 public static <T> void sort(T[] a, Comparator<? super T> c)
方法的签名。
我可以得到输出:
int arr[][]={{1,2},{2,3},{3,4},{1,3}};
Arrays.sort(arr,(a,b)->(b[0]-a[0]));
但是它显示错误:
int arr[]={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
Error: method Arrays.<T#1>sort(T#1[],Comparator<? super T#1>) is not applicable
我在这里错过了什么?
Arrays.sort()
没有接受 int[]
和 Comparator
的变体,这并不奇怪,因为您不能定义 Comparator<int>
(通用类型参数必须是引用类型)。
如果您将数组更改为 Integer[]
,它将起作用:
Integer[] arr={1,2,3,4,5,6};
Arrays.sort(arr,(a,b)->(b-a));
您的第一个代码片段有效,因为您的第一个 (2D) 数组的元素类型是 int[]
(int
的数组),并且数组是引用类型。因此它符合 public static <T> void sort(T[] a, Comparator<? super T> c)
方法的签名。