我需要在Java中重复生成随机顺序的整数数组。我想出了以下丑陋的片段(以更大的循环运行)。什么是更有效或更紧凑的方法?

    ArrayList<Integer> t = new ArrayList<>();
    int[] d = new int[elts];
    for (int i = 0; i < elts; i++) {
        t.add(i);
    }
    Collections.shuffle(t);
    for (int i = 0; i < elts; i++) {
        d[i] = t.get(i);
    }

最佳答案

使用Java 8 Stream API:

    List<Integer> list = IntStream.range(0, elts).boxed().collect(toList());
    Collections.shuffle(list);
    int[] d = list.stream().mapToInt(i -> i).toArray();

07-24 09:25