java - Collections.shuffle 是否保证结果不排序?

标签 java collections

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/

相关文章:

java - Java 流上的聚合操作如何工作?

java - 如何使用 Java 8 Stream API 过滤集合中的列表

c# - 具有多个具有相同键的条目的字典

java - 查询优化 Java - 在嵌套循环中使用查询

java - 如何一步步连接Gremlin到Neo4j数据库?

java - 将模拟对象作为 JUnit 参数传递给带参数的测试方法

java - 我应该在每次成功处理消息后关闭我的套接字吗?

java - HtmlUnit网页状态码

collections - Zorba 系列 : a simple directory of xml files

Java 优先级队列 : Is it better to poll() and then add() or peek() and then remove()