((Java)使用lambda作为Arrays.sort中的比较器。sort[duplicate]

问题描述 投票:-1回答:2

我正在尝试编写一个带有两个参数的函数,即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)

中声明的对象
java arrays sorting java-8 java-api
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.