在 Java 中,Collections.shuffle() 方法用于随机打乱(重新排列)一个列表中的元素。该方法属于 java.util.Collections 类,通常用于对 List 类型的集合进行随机排序。

语法:

Collections.shuffle(List<?> list)
  • 参数list – 需要打乱顺序的 List 集合。
  • 返回值:此方法没有返回值,它直接修改传入的 List 集合。

例子:

import java.util.*;

public class ShuffleExample {
    public static void main(String[] args) {
        // 创建一个包含 1 到 10 的列表
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            numbers.add(i);
        }

        // 打印原始列表
        System.out.println("原始列表: " + numbers);

        // 随机打乱列表
        Collections.shuffle(numbers);

        // 打印打乱后的列表
        System.out.println("打乱后的列表: " + numbers);
    }
}

输出:

原始列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
打乱后的列表: [3, 1, 10, 5, 7, 9, 4, 6, 2, 8]

额外功能:使用随机源

Collections.shuffle() 还可以接受一个额外的 Random 对象参数,用来提供自定义的随机源,这可以让你控制随机数生成的种子,进而影响打乱的结果。

import java.util.*;

public class ShuffleWithRandom {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            numbers.add(i);
        }

        // 使用自定义的 Random 对象
        Random random = new Random(42); // 固定种子,保证每次执行结果相同
        Collections.shuffle(numbers, random);

        System.out.println("打乱后的列表: " + numbers);
    }
}

说明:

  • Collections.shuffle() 是一个 非稳定排序,意味着它不会保留元素的原始顺序。每次调用它都会给列表带来一个新的、随机的顺序。
  • 如果你希望按照特定的方式进行“排序”或是更复杂的乱序操作,可以考虑使用 Comparator 或自定义排序方法。

有其他问题或需要更多关于 Collections 类的帮助吗?