我有一个包含 N 个元素的列表,我想随机化它的顺序。
最好是计算量最少,并且能够用完内存(复制总数)。
到目前为止我想出了:
- 创建新的空列表,从原始列表中取出第一个元素,将其插入到新列表中的随机位置,数量级似乎为 O(N*N),但不使用额外的内存。
- 创建一个新的ArrayList(容量N)(因此访问时间为O(1)),创建一个新的hashSet并插入所有可能的位置(N),取出原始List的第一个元素并将其插入到随机位置新的 arrayList,从 hashSet 中删除该位置,因为 ti 已被使用。
- 创建一个新的HashSet,将所有元素添加到这个hashSet中,并迭代该集合以创建一个新的List,并希望hashSet中的顺序是随机的。
在我看来,最便宜的是第三种选择,但我不确定结果的随机性。有什么建议吗?
最佳答案
Collections.shuffle(list);
您正在寻找什么。
关于java - 在 Java 中重新排序列表以随机化其顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050524/