java中排列/打乱数组列表元素

发布于 2024-10-18 06:53:03 字数 144 浏览 5 评论 0原文

假设我有整数数组列表...有没有一种方法可以生成数组列表中元素的随机排列/排列,

因此如果列表是 {1,2,3,4,5,6}

调用某种方法 randomPermute () 会将其更改为随机值,例如

{1,3,2,6,5,4}

suppose I have arraylist of integers...is there a way that I can generate a random permutation/arrangement of the elements in the arraylist

so if the list is {1,2,3,4,5,6}

calling some method randomPermute() would change it to something random like

{1,3,2,6,5,4}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

メ斷腸人バ 2024-10-25 06:53:03

Collections.shuffle() 的工作:

public static void shuffle(List list) -
使用默认的随机源随机排列指定的列表。所有排列发生的可能性大致相等。
http:// download.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List)

例如

    ArrayList<Integer>anArrayList = new ArrayList<Integer>();
    anArrayList.add(1);
    anArrayList.add(2);
    anArrayList.add(3);
    anArrayList.add(4);
    anArrayList.add(5);
    System.out.println(anArrayList);
    Collections.shuffle(anArrayList);
    System.out.println(anArrayList);

示例输出

[1, 2, 3, 4, 5]
[3, 5, 1, 2, 4]

Collections.shuffle() does the job:

public static void shuffle(List<?> list) -
Randomly permutes the specified list using a default source of randomness. All permutations occur with approximately equal likelihood.
http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List)

For example

    ArrayList<Integer>anArrayList = new ArrayList<Integer>();
    anArrayList.add(1);
    anArrayList.add(2);
    anArrayList.add(3);
    anArrayList.add(4);
    anArrayList.add(5);
    System.out.println(anArrayList);
    Collections.shuffle(anArrayList);
    System.out.println(anArrayList);

Sample Output

[1, 2, 3, 4, 5]
[3, 5, 1, 2, 4]
骄傲 2024-10-25 06:53:03

您可以使用Knuth shuffle:遍历位置 1 到 n−1,并针对每个位置我将当前存在的元素与从位置 i 到 n(含)中任意选择的元素交换。

编辑:hooch 的答案更好。 :)

You can use the Knuth shuffle: go through the positions 1 through n−1, and for each position i swap the element currently there with an arbitrarily chosen element from positions i through n, inclusive.

Edit: The answer by hooch is better. :)

咆哮 2024-10-25 06:53:03

一个简单的例子:

ArrayList<MyObject> myObjects = new ArrayList<MyObject>();
//code -- load myObjects...

Collections.shuffle(myObjects);

A simple example:

ArrayList<MyObject> myObjects = new ArrayList<MyObject>();
//code -- load myObjects...

Collections.shuffle(myObjects);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文