新数组中的Java排序索引

新数组中的Java排序索引,java,arrays,sorting,comparator,Java,Arrays,Sorting,Comparator,假设我有一个数组测试- int[] test={5,4,3,2,1}; 现在,当我按递增顺序对这个数组排序时,我想将元素的索引存储在一个新数组中。因此,按递增顺序对上述数组进行排序应该会创建一个值为{4,3,2,1,0}的新数组 在C++中,这是代码-< /p> 向量顺序(n); iota(order.begin()、order.end()、0); 排序(order.begin(),order.end(),[&](inti,intj){ 返回测试[i]您可以使用Comparator按索引值对所

假设我有一个数组测试-

int[] test={5,4,3,2,1};
现在,当我按递增顺序对这个数组排序时,我想将元素的索引存储在一个新数组中。因此,按递增顺序对上述数组进行排序应该会创建一个值为{4,3,2,1,0}的新数组 在C++中,这是代码-< /p>
向量顺序(n);
iota(order.begin()、order.end()、0);
排序(order.begin(),order.end(),[&](inti,intj){

返回测试[i]您可以使用
Comparator按索引值对所有索引进行排序

int[] res = IntStream.range(0, test.length)
                     .boxed()
                     .sorted(Comparator.comparing(e -> test[e]))
                     .mapToInt(e -> e)
                     .toArray();

输出:
[4,3,2,1,0]

您应该使用ArrayList而不是Vector,据我所知,Vector已被弃用多年。
int[] res = IntStream.range(0, test.length)
                     .boxed()
                     .sorted(Comparator.comparing(e -> test[e]))
                     .mapToInt(e -> e)
                     .toArray();