正如類名所示,Collections 類的 shuffle() 方法存在於稱為java.util打亂列表中的元素。
我們可以使用兩種方法在我們的程序中實現,如下所示:
- 使用預定義的隨機源
- 使用用戶提供的隨機源
方式 1:使用預定義的隨機源對給定列表進行混洗。
用法:
public static void shuffle(List mylist)
拋出異常: UnsupportedOperationException如果給定列表或其list-iterator不支持設置操作,則拋出該異常。
例子:
Java
// Java program to demonstrate
// working of shuffle() method
// of Collections class
// Importing utility classes
import java.util.*;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an empty ArrayList of string type
ArrayList<String> mylist = new ArrayList<String>();
// Adding custom input elements to list object
mylist.add("code");
mylist.add("quiz");
mylist.add("geeksforgeeks");
mylist.add("quiz");
mylist.add("practice");
mylist.add("qa");
// Printing list before shuffling
System.out.println("Original List : \n" + mylist);
// Shuffling the list
Collections.shuffle(mylist);
// Printing list after shuffling
System.out.println("\nShuffled List : \n" + mylist);
}
}
Original List : Shuffled List : [quiz, quiz, geeksforgeeks, code, practice, qa]
方式 2:使用用戶提供的隨機源對給定列表進行混洗。
這裏提供了一個附加參數,上麵指定了“rndm”是隨機排列列表的來源。
用法:
public static void shuffle(List mylist, Random rndm)
Parameters: 這裏需要列出兩個參數
- List
- 隨機性的來源
例外情況:UnsupportedOperationException如果指定的列表或其list-iterator不支持設置操作。
例子:
Java
// Java Program to demonstrate working of shuffle()
// with user provided source of randomness
// Importing required utility classes
import java.util.*;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an empty ArrayList of string type
ArrayList<String> mylist = new ArrayList<String>();
// Adding custom input elements to above created
// object
mylist.add("code");
mylist.add("quiz");
mylist.add("geeksforgeeks");
mylist.add("quiz");
mylist.add("practice");
mylist.add("qa");
// Print and display the elements of List on console
System.out.println("Original List : \n" + mylist);
// Shuffling the given list
// using Random() method
Collections.shuffle(mylist, new Random());
// Print the updated list on console
System.out.println(
"\nShuffled List with Random() : \n" + mylist);
// Shuffling list by using Random(3)
Collections.shuffle(mylist, new Random(3));
// Print the updated list on console
System.out.println(
"\nShuffled List with Random(3) : \n" + mylist);
// Again shuffling list by using Random(3)
Collections.shuffle(mylist, new Random(5));
System.out.println(
"\nShuffled List with Random(5) : \n" + mylist);
}
}
Original List : Shuffled List with Random() : [geeksforgeeks, qa, quiz, code, quiz, practice] Shuffled List with Random(3) : [practice, code, qa, quiz, geeksforgeeks, quiz] Shuffled List with Random(5) :
但在實施此方法之前,請記住以下列出的某些重要事項,如下所示:
- 內部工作:此方法隨機排列列表中的元素。
- Runtime:它以線性時間運行。
- 訪問元素:
- 它向後遍曆列表,從最後一個元素到第二個元素,反複將隨機選擇的元素交換為其“current position”。
- 此後,從列表中從第一個元素到當前位置(含)的部分中隨機選擇元素。
Note: If the provided list does not implement the RandomAccess interface, like LinkedList, and is large, it first copies the list into an array, then shuffles the array copy, and finally copies the array back into the list. This makes sure that the time remains linear.
相關用法
- Java Collections.shuffle()用法及代碼示例
- Java Collections.singleton()用法及代碼示例
- Java Collections.sort()用法及代碼示例
- Java Collections.binarySearch()用法及代碼示例
- Java Collections.nCopies()用法及代碼示例
- Java Collections.reverse()用法及代碼示例
- Java Collections.reverseOrder()用法及代碼示例
- Java Collections binarySearch()用法及代碼示例
- Java Collections checkedNavigableMap()用法及代碼示例
- Java Collections checkedNavigableSet()用法及代碼示例
- Java Collections checkedQueue()用法及代碼示例
- Java Collections disjoint()用法及代碼示例
- Java Collections emptyEnumeration()用法及代碼示例
- Java Collections emptyIterator()用法及代碼示例
- Java Collections emptyList()用法及代碼示例
- Java Collections emptyListIterator()用法及代碼示例
- Java Collections emptyMap()用法及代碼示例
- Java Collections emptyNavigableMap()用法及代碼示例
- Java Collections emptyNavigableSet()用法及代碼示例
- Java Collections emptySet()用法及代碼示例
- Java Collections emptySortedMap()用法及代碼示例
- Java Collections emptySortedSet()用法及代碼示例
- Java Collections frequency()用法及代碼示例
- Java Collections lastIndexOfSubList()用法及代碼示例
- Java Collections nCopies()用法及代碼示例
注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Collections.shuffle() Method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。