[英]Reorder a List to randomize its order in Java
我有一个包含N个元素的列表,我想将其顺序随机化。
优选地,以最少的计算,并且能够用完存储器(将总数复制)。
到目前为止,我已经提出了:
在我看来,最便宜的是第三种选择,但我不确定结果的随机性。 有什么建议么?
Collections.shuffle(list);
您正在寻找什么。
随机播放列表的最佳方法是使用标准库方法Collections.shuffle
。
List lst = getListFromSomewhere();
Collections.shuffle(lst);
如果您想自己做,请阅读Fisher-Yates随机算法 。
其他人已经提到过shuffle,但是如果您使用的是gwt,则不支持shuffle,您可能必须对其进行编码。 这是一种方法:
public static void shuffleList(final List<String> list) {
int length = list.size();
Random random = new Random();
for (int i = 0; i < length; i++) {
// Swap index
int swap = i + random.nextInt(length - i);
// Store temporarily
String temp = list.get(i);
// Set the values
list.set(i, list.get(swap));
list.set(swap, temp);
}
}
要使用,只需-
shuffleList(listOfStringsToShuffle);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.