繁体   English   中英

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];
});

我想知道如何使用比较器类在 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM