Collections.shuffle
是否保证结果列表不按升序或降序排序?
假设我有一个包含“a”,“b”,“c”,“d”的字符串letters
列表。
Collections.shuffle(letters)
letters
后letters
等于a-b-c-d或d-c-b-a?
如果Collections.shuffle
最终可以订购,是否有办法阻止{{1}}按升序或降序排列?
答案 0 :(得分:6)
当然不会,因为那样它就不会随意乱扔。仅仅因为这两种排列看起来对我们来说是人类并不意味着在选择随机排列时应该避免它们。
如果你想避免升序和降序,你可以在一个循环中随机检查列表是否有序。
while (isSorted(list) || isSorted(list, Comparator.reverseOrder())
Collections.shuffle(list);
适当实施isSorted
。 (请注意,这将是0或1元素列表的无限循环!)