如何创建按降序排列的数组?

Eze*_*ler 0 java arrays random

我正在使用数组来完成这个项目。我有一个名为 createRandomIntArray 的方法来创建一个数组。此方法旨在按降序返回数组。我已经能够做到这一点,但我想知道是否有比我编写的方式更有效的方法来编写此方法。我的代码如下。

    public static int[] createRandomIntArray(int n) {
        Random random = new Random();

        int[] result = new int[n];
        for (int i = 0; i < n; i++) {
            result[i] = random.nextInt(n);
        }
        Arrays.sort(result);

        for (int i = 0; i < result.length / 2; i++) {
            int temp = result[i];
            result[i] = result[result.length - i - 1];
            result[result.length - i - 1] = temp;
        }
        return result;
    }

Run Code Online (Sandbox Code Playgroud)

dpr*_*dpr 5

您可以通过直接逆序排序来避免反转已排序的数组:

\n
Arrays.sort(result, Comparator.reverseOrder());\n
Run Code Online (Sandbox Code Playgroud)\n

正如评论中提到的,Random.ints(\xe2\x80\xa6)如果您\xe2\x80\x99不依赖于使用数组,则可以使用:

\n
random.ints(n, 0, n).boxed().sorted(Comparator.reverseOrder()).mapToInt(i -> i).toArray();\n
Run Code Online (Sandbox Code Playgroud)\n