Ce face Collections.shuffle
Collections.shuffle(lista) pune elementele într-o ordine aleatorie, fiecare ordine fiind la fel de probabilă. Lista se modifică pe loc. Fără al doilea argument, rezultatul diferă la fiecare rulare.
Dacă dai un new Random(seed) cu un număr fix, amestecarea este reproductibilă: același seed dă aceeași ordine. Este util în teste, în jocuri cu „cod de nivel” sau ca să poți repeta o tragere la sorți.
Parametri
| Parametru | Descriere |
|---|---|
list |
Lista amestecată (modificabilă). |
rnd |
Sursa de numere aleatorii. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: Ordinea de prezentare, trasă la sorți
Seed-ul 2026 face ca rezultatul să fie același la fiecare rulare.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<String> echipe = new ArrayList<>(List.of("Ana", "Radu", "Elena", "Mihai", "Ioana"));
Collections.shuffle(echipe, new Random(2026));
for (int i = 0; i < echipe.size(); i++) {
System.out.println((i + 1) + ". " + echipe.get(i));
}
}
}
Rezultat
1. Elena
2. Mihai
3. Radu
4. Ana
5. Ioana
Exemplul 2: Același seed, aceeași ordine
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> a = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8));
List<Integer> b = new ArrayList<>(a);
Collections.shuffle(a, new Random(7));
Collections.shuffle(b, new Random(7));
System.out.println(a);
System.out.println(b);
System.out.println("Egale: " + a.equals(b));
}
}
Rezultat
[1, 3, 7, 2, 5, 4, 8, 6]
[1, 3, 7, 2, 5, 4, 8, 6]
Egale: true
Greșeli frecvente
- Amesteci o listă creată cu
List.of. ApareUnsupportedOperationException; copiaz-o într-unArrayList. - Creezi un
new Random(seed)nou cu același seed la fiecare tragere și te miri că iese mereu la fel. Creează obiectul o singură dată și refolosește-l.
Comenzi înrudite
Collections.sort: Sortează o listă pe loc: crescător după ordinea naturală sau după un Comparator dat. Echivalent cu lista.sort(…).Collections.reverse: reverse inversează pe loc ordinea elementelor unei liste; swap schimbă între ele elementele de pe două poziții.List: Interfața pentru liste ordonate: elementele au poziții (0, 1, 2…), se pot repeta și se pot citi după index.