如何在没有集合的情况下混洗ArrayList

Gre*_*ino 1 java shuffle list arraylist

我有一个"令牌"的数组列表.我可以用整数填充它们,没问题.但是,我无法在不使用内置列表类的情况下随机重新排列它们.有什么建议?

TopSpinArray<Integer> al = new TopSpinArray<Integer>(numTokens, spinSize);

    //fills ArrayList with tokens
    for(int i = 1; i <= numTokens; i++) {
        al.add(i);
    }
Run Code Online (Sandbox Code Playgroud)

Jab*_*bir 6

您可以使用以下代码.

 public static void shuffleList(List<Integer> a) {
    int n = a.size();
    Random random = new Random();
    random.nextInt();
    for (int i = 0; i < n; i++) {
      int change = i + random.nextInt(n - i);
      swap(a, i, change);
    }
  }

  private static void swap(List<Integer> a, int i, int change) {
    int helper = a.get(i);
    a.set(i, a.get(change));
    a.set(change, helper);
  }
Run Code Online (Sandbox Code Playgroud)

请注意,这已从以下链接复制

http://www.vogella.com/articles/JavaAlgorithmsShuffle/article.html

希望能帮助到你