我正在尝试编写一个带有两个参数的函数,即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;
}
可以更改的类型arr1(当然也可以返回类型),以使类型符合(为Integer[])并简单地编写:
Arrays.sort(arr1, Comparator.comparing(elemToInd::get)); 但是你正在做的事情很困惑。你不能将泛型与原语一起使用。另外,你可以在集合上调用sort方法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。