• 【Java】Collections.shuffle 洗牌方法,随机重排序一组元素


    ▚ 01 Collections.shuffle介绍


    📢 Java Collections shuffle() 是一个Java Collections 类方法,通过随机化排列指定的列表元素来工作。根据其参数的不同,可以划分为两种不同类型的Java shuffle()

    • 1. Java Collections shuffle(list)方法
    • 2. Java Collections shuffle(list, random)方法

    1.1 shuffle(list)

    • shuffle(list)方法使用默认的随机性对指定的列表元素进行随机重新排序。

    1.2 shuffle(list, random)

    • shuffle(list, random)方法使用指定的随机性对指定的列表元素进行随机重新排序。

    1.3 句法

    • shuffle()方法的声明如下:
    public static void shuffle(List<?> list)  
    public static void shuffle(List<?> list, Random random)  
    
    • 1
    • 2

    1.4 参数

    参数描述可用性
    list将要被洗牌的列表必须的
    random随机的来源,用于洗牌列表必须的

    1.5 返回值

    • shuffle() 方法:不返回任何值。

    1.6 异常

    • UnsupportedOperationException 如果指定的列表或其列表迭代器不支持set操作,此方法将引发异常。

    1.7 版本的兼容性

    • Java 1.5 及以上版本。

    在这里插入图片描述


    ▚ 02 示例演示


    2.1 示例1 (shuffle_list_integer)

    • 🍁源代码为:
    import java.util.*;
    
    public class shuffle_list_integer {
        public static void main(String[] args) {
            List<Integer> list = Arrays.asList(1,2,3,4,5,6);
            
            System.out.println("Before shuffle: " + list);
            Collections.shuffle(list);
            System.out.println("After shuffle (default): " + list);
            
            list = Arrays.asList(1,2,3,4,5,6);
            Collections.shuffle(list, new Random(10));
            System.out.println("After shuffle (new Random(10)): " + list);
            
            list = Arrays.asList(1,2,3,4,5,6);
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
            
            list = Arrays.asList(1,2,3,4,5,6);
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 🍏输出结果为:
    Before shuffle: [1, 2, 3, 4, 5, 6]
    After shuffle (default): [4, 5, 1, 2, 6, 3]
    After shuffle (new Random(10)): [6, 3, 5, 2, 1, 4]
    After shuffle (new Random(100)): [3, 6, 4, 5, 1, 2]
    After shuffle (new Random(100)): [3, 6, 4, 5, 1, 2]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 示例2 (shuffle_list_string)

    • 🍁源代码为:
    import java.util.*;
    
    public class shuffle_list_string {
        public static void main(String[] args) {
            List<String> list = Arrays.asList("Apple", "Banana", "Orange", "Watermelon", "Cherry", "Peach");
            System.out.println("Before shuffle: " + list);
            
            Collections.shuffle(list);
            System.out.println("After shuffle (default): " + list);
            
            list = Arrays.asList("Apple", "Banana", "Orange", "Watermelon", "Cherry", "Peach");
            Collections.shuffle(list, new Random(10));
            System.out.println("After shuffle (new Random(10)): " + list);
            
            list = Arrays.asList("Apple", "Banana", "Orange", "Watermelon", "Cherry", "Peach");
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
            
            list = Arrays.asList("Apple", "Banana", "Orange", "Watermelon", "Cherry", "Peach");
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 🍏输出结果为:
    Before shuffle: [Apple, Banana, Orange, Watermelon, Cherry, Peach]
    After shuffle (default): [Banana, Watermelon, Peach, Orange, Apple, Cherry]
    After shuffle (new Random(10)): [Peach, Orange, Cherry, Banana, Apple, Watermelon]
    After shuffle (new Random(100)): [Orange, Peach, Watermelon, Cherry, Apple, Banana]
    After shuffle (new Random(100)): [Orange, Peach, Watermelon, Cherry, Apple, Banana]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 示例3 (shuffle_linkedlist_integer)

    • 🍁源代码为:
    import java.util.*;
    
    public class shuffle_linkedlist_integer {
        public static void main(String[] args) {
            LinkedList<Integer> list = new LinkedList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            list.add(5);
            list.add(6);
            System.out.println("Before shuffle: " + list);
            
            Collections.shuffle(list);
            System.out.println("After shuffle (default): " + list);
            
            list.clear();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            list.add(5);
            list.add(6);
            Collections.shuffle(list, new Random(10));
            System.out.println("After shuffle (new Random(10)): " + list);
            
            list.clear();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            list.add(5);
            list.add(6);
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
            
            list.clear();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            list.add(5);
            list.add(6);
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 🍏输出结果为:
    Before shuffle: [1, 2, 3, 4, 5, 6]
    After shuffle (default): [4, 1, 3, 2, 5, 6]
    After shuffle (new Random(10)): [6, 3, 5, 2, 1, 4]
    After shuffle (new Random(100)): [3, 6, 4, 5, 1, 2]
    After shuffle (new Random(100)): [3, 6, 4, 5, 1, 2]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.4 示例4 (shuffle_linkedlist_string)

    • 🍁源代码为:
    import java.util.*;
    
    public class shuffle_linkedlist_string {
        public static void main(String[] args) {
            LinkedList<String> list = new LinkedList<String>();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
            list.add("Watermelon");
            list.add("Cherry");
            list.add("Peach");
            System.out.println("Before shuffle: " + list);
    
            Collections.shuffle(list);
            System.out.println("After shuffle (default): " + list);
           
            list.clear();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
            list.add("Watermelon");
            list.add("Cherry");
            list.add("Peach");
            Collections.shuffle(list, new Random(10));
            System.out.println("After shuffle (new Random(10)): " + list);
            
            list.clear();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
            list.add("Watermelon");
            list.add("Cherry");
            list.add("Peach");
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
            
            list.clear();
            list.add("Apple");
            list.add("Banana");
            list.add("Orange");
            list.add("Watermelon");
            list.add("Cherry");
            list.add("Peach");
            Collections.shuffle(list, new Random(100));
            System.out.println("After shuffle (new Random(100)): " + list);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 🍏输出结果为:
    Before shuffle: [Apple, Banana, Orange, Watermelon, Cherry, Peach]
    After shuffle (default): [Peach, Banana, Cherry, Watermelon, Orange, Apple]
    After shuffle (new Random(10)): [Peach, Orange, Cherry, Banana, Apple, Watermelon]
    After shuffle (new Random(100)): [Orange, Peach, Watermelon, Cherry, Apple, Banana]
    After shuffle (new Random(100)): [Orange, Peach, Watermelon, Cherry, Apple, Banana]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述


    参考材料







    在这里插入图片描述

  • 相关阅读:
    最小公倍数
    运维技术linux、nginx
    Docker命令-build
    python in Vscode
    为什么那么多人说大数据只是写SQL?
    我的测试文章
    MySQL面试题
    vue-cli3项目本地启用https,并用mkcert生成证书
    portainer忘记密码之修改密码
    Github每日精选(第60期):使用 HTML5 画布从 DOM 节点生成图像html-to-image
  • 原文地址:https://blog.csdn.net/Xminyang/article/details/126696521