Last Updated : 23 Jul, 2025
shuffle() method of Collections class as the class name suggests is present in utility package known as java.util that shuffles the elements in the list.
There are two ways with which we can use to implement in our programs that are as follows:
Way 1: Shuffling a given list using the pre-defined source of randomness.
Syntax:
public static void shuffle(List mylist)
Exception Thrown: UnsupportedOperationException is thrown if the given list or its list-iterator does not support the set operation.
Example:
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 : [code 1="quiz," 2="geeksforgeeks," 3="quiz," 4="practice," 5="qa" language=","][/code] Shuffled List : [quiz, quiz, geeksforgeeks, code, practice, qa]
Way 2: Shuffling a given list using the user-provided source of randomness.
Here an additional parameter that is provided which above specified "rndm" is the source of randomness to shuffle the list.
Syntax:
public static void shuffle(List mylist, Random rndm)
Parameters: Here it takes two parameters as listed
Exceptions: UnsupportedOperationException if the specified list or its list-iterator does not support the set operation.
Example:
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 : [code 1="quiz," 2="geeksforgeeks," 3="quiz," 4="practice," 5="qa" language=","][/code] 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) : [code 1="quiz," 2="geeksforgeeks," 3="practice," 4="qa," 5="quiz" language=","][/code]
But do remember certain important points as listed below prior to implementing this method as listed below as follows:
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4