有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组在Java中,如何在不改变整数顺序的情况下找到整数组的顺序?

我试图找出一组未定义的整数的顺序

例如,它可以是{30,60,10100,20,50110}但是我不想对它们进行排序,我想用它们的顺序来更改它们(或创建一个新数组)

例如,前面给出的数组将变成{3,5,1,6,2,4,7}。这是因为30是数组中的第一个数字,也是数组中第三个最小的数字。60是最小的第五位等等,所以我有了新的数字升序,而不改变它们在数组中的位置


共 (1) 个答案

  1. # 1 楼答案

    我不知道它的可读性和效率,但我想尝试这样做。它从范围[0, numbers.length - 1]创建一个整数流,并使用数字作为原始数组的索引对它们进行排序。它在最后加1,得到从1开始的范围

    int[] numbers = {30, 60, 10, 100, 20, 50, 110};
    int[] order = IntStream.range(0, numbers.length).boxed()
            .sorted(Comparator.comparingInt(e -> numbers[e]))
            .mapToInt(e -> e + 1).toArray();
    System.out.println(Arrays.toString(order)); // [3, 5, 1, 6, 2, 4, 7]