Java根据第一个数组的索引对第二个数组进行排序

标签 java arrays sorting maps

我有两个整数数组

int[] sum=new int[n];
int[] newTime=new int[n];
  1. 第一个:1 5 3
  2. 第二个 10 15 13

Arrays.sort(sum);

  1. 打印 1 3 5

我想要的是即使第二个数组也用相同的索引排序 的

  1. 第一=>第二: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/

相关文章:

java - 访问图例项文本

java - 如何递归解压缩java中的给定字符串?

java - 为什么我的 ArrayList 包含添加到列表中的最后一项的 N 个副本?

php - 在 PHP 中使用整数过滤数组值

algorithm - 决定哪种排序算法最有效的真实世界示例

javascript - javascript中按每个第n个元素排序

java - 使用Java标准LinkedList搜索Mergesort算法

java - 在java中保持地址空间相同

javascript - 在 JavaScript 中添加数字数组时出现奇怪的结果

c - 在 gcc 中初始化数组,未定义对 `memcpy' 的引用