java - 在 Java 中重新排序列表以随机化其顺序

标签 java random

我有一个包含 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/

相关文章:

java - GraalVM 中的异常链

encryption - 加密安全随机数生成器如何工作?

python - Pandas :在 2 个索引值之间随机拆分索引值

java - Android - 在继续方法之前等待 json 获取值

java - 我正在用java创建一个小程序,它要求用户输入5个整数并将其放入一个数组中

python - 剪刀石头布程序不工作(Python)

c - 将-1、0或1随机添加到C中的数字

java - 在并行 Stream#filter 中使用随机数是否有效?

java - for 循环中每隔一行开头的空格

java - SparkStreaming - ExitCodeException exitCode=13