我有两个整数数组
int[] sum=new int[n];
int[] newTime=new int[n];
- 第一个:1 5 3
- 第二个 10 15 13
Arrays.sort(sum);
- 打印 1 3 5
我想要的是即使第二个数组也用相同的索引排序 的
- 第一=>第二:10 13 15
我尝试过使用 map :
SortedMap<Integer, Integer> m = new TreeMap<Integer, Integer>();
for(int i = 0; i < priorities.length; i++){
m.put(sum[i],newTime[i]);
}
它只对第一个数组进行排序,第二个数组的索引不变。感谢帮助! 谢谢!
最佳答案
例如,您可以像这样使用 java-8 来做到这一点:
int[] left = new int[] { 1, 5, 3 };
int[] right = new int[] { 10, 15, 13 };
IntStream.range(0, left.length)
.boxed()
.map(x -> new AbstractMap.SimpleEntry<>(left[x], right[x]))
.sorted(Comparator.comparing(SimpleEntry::getKey))
.forEach(System.out::println);
编辑
实际得到第二个数组:
Integer[] second = IntStream.range(0, left.length)
.boxed()
.map(x -> new AbstractMap.SimpleEntry<>(left[x], right[x]))
.sorted(Comparator.comparing(SimpleEntry::getKey))
.map(SimpleEntry::getValue)
.toArray(Integer[]::new);
关于Java根据第一个数组的索引对第二个数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46463237/