Collections.shuffle
能否保证结果列表不按升序或降序排序?
假设我有一个包含“a”、“b”、“c”、“d”的字符串字母
列表。
在Collections.shuffle(letters)
之后letters
会等于a-b-c-d或d-c-b-a吗?
如果字母
最终可以排序,是否有办法阻止Collections.shuffle
按升序或降序排列列表?
最佳答案
当然不是,因为那样就不是随机洗牌了。仅仅因为这两种排列对我们人类来说看起来是有序的,并不意味着在选择随机排列时应该避免它们。
如果您确实想避免升序和降序,可以在循环中随机播放,检查列表是否已排序。
while (isSorted(list) || isSorted(list, Comparator.reverseOrder())
Collections.shuffle(list);
使用 isSorted
的适当实现。 (请注意,对于 0 或 1 元素列表,这将是一个无限循环!)
关于java - Collections.shuffle 是否保证结果不排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673838/