此问题已经在这里有了答案:
我正在尝试编写一个带有两个参数的函数,即int [] arr1和int [] arr2。然后,应按arr2中给定的顺序对arr1进行排序。例如,如果arr1为[0,1,2,3],而arr2为[1,2,3,0],则函数应返回[1,2,3,0],并按arr2中的顺序元素对arr1进行排序索引。
我写了下面的代码,但是在Arrays.sort上我不断出错。我使用不正确吗?您能指定我在做什么错吗?
public int[] relativeSortArray(int[] arr1, int[] arr2) {
Map<Integer, Integer> elemToInd = new HashMap<Integer, Integer>();
for (int i = 0; i < arr2.length; i++) {
elemToInd.put(arr2[i], i);
}
Arrays.sort(arr1, (int n1, int n2) -> elemToInd.get(n1) - elemToInd.get(n2));
return arr1;
}
错误:找不到适合的方法sort(int [],(int n1,i [... t(n2)))Arrays.sort(arr1,(int n1,int n2)-> elemToInd.get(n1)-elemToInd.get(n2));^方法Arrays.sort(T#1 [],Comparator)不适用(推断变量T#2具有不兼容的范围等式约束:int上限:对象)方法Arrays.sort(T#3 [],int,int,Comparator)不适用(无法推断类型变量T#3(实际和正式参数列表的长度不同)其中T#1,T#2,T#3是类型变量:T#1扩展了在方法sort(T#1 [],Comparator)中声明的对象T#2扩展了接口比较器中声明的对象T#3扩展了在方法sort(T#3 [],int,int,Comparator)
中声明的对象