开发者社区> 问答> 正文

在arrays.sort中将lambda用作比较器

我正在尝试编写一个带有两个参数的函数,即int [] arr1和int [] arr2。然后,应按arr2中给定的顺序对arr1进行排序。例如,如果arr1为[0,1,2,3],而arr2为[1,2,3,0],则函数应返回[1,2,3,0],将arr1按arr2中的顺序元素排序被索引。

我写了下面的代码,但是在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;

}

展开
收起
小六码奴 2019-10-12 17:42:23 2601 0
1 条回答
写回答
取消 提交回答
  • 可以更改的类型arr1(当然也可以返回类型),以使类型符合(为Integer[])并简单地编写:

    Arrays.sort(arr1, Comparator.comparing(elemToInd::get)); 但是你正在做的事情很困惑。你不能将泛型与原语一起使用。另外,你可以在集合上调用sort方法

    2019-10-12 17:45:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载