Java 对新数组中的索引进行排序
Java sorting indices in a new array
假设我有一个数组测试-
int[] test={5,4,3,2,1};
现在,当我按递增顺序对这个数组进行排序时,我想将元素的索引存储在一个新数组中。因此,按升序对上述数组进行排序应该会创建一个值为 {4,3,2,1,0} 的新数组
在 C++ 中,这是代码--
vector<int> order(n);
iota(order.begin(),order.end(),0);
sort(order.begin(),order.end(),[&](int i,int j){
return test[i]<=test[j];
});
我想知道如何使用比较器 class
在 Java 中实现它
您可以使用 Comparator.comparing
这种方式
按该索引的值对所有索引进行排序
int[] res = IntStream.range(0, test.length)
.boxed()
.sorted(Comparator.comparing(e -> test[e]))
.mapToInt(e -> e)
.toArray();
输出:[4, 3, 2, 1, 0]
假设我有一个数组测试-
int[] test={5,4,3,2,1};
现在,当我按递增顺序对这个数组进行排序时,我想将元素的索引存储在一个新数组中。因此,按升序对上述数组进行排序应该会创建一个值为 {4,3,2,1,0} 的新数组 在 C++ 中,这是代码--
vector<int> order(n);
iota(order.begin(),order.end(),0);
sort(order.begin(),order.end(),[&](int i,int j){
return test[i]<=test[j];
});
我想知道如何使用比较器 class
在 Java 中实现它您可以使用 Comparator.comparing
这种方式
int[] res = IntStream.range(0, test.length)
.boxed()
.sorted(Comparator.comparing(e -> test[e]))
.mapToInt(e -> e)
.toArray();
输出:[4, 3, 2, 1, 0]