▚ 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]