【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.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);
    }
}
  • 🍏输出结果为:
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]

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);
    }
}
  • 🍏输出结果为:
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]

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);
    }
}
  • 🍏输出结果为:
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]

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);
    }
}
  • 🍏输出结果为:
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]

在这里插入图片描述


参考材料







在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值