Как перемешать список
Короткий ответ
Collections.shuffle() перемешивает список в случайном порядке:
void main() {
var cards = new ArrayList<>(List.of("A", "K", "Q", "J", "10"));
Collections.shuffle(cards);
IO.println(cards);
}Результат:
[A, Q, K, 10, J]При каждом запуске порядок другой.
Повторяемый результат
Передайте Random с фиксированным начальным числом — перемешивание будет одинаковым:
void main() {
var numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Collections.shuffle(numbers, new Random(42));
IO.println(numbers);
}Результат:
[2, 3, 4, 5, 1]Случайный элемент
Чтобы выбрать один элемент, перемешивать весь список не нужно:
void main() {
var prizes = List.of("book", "mug", "t-shirt");
String prize = prizes.get(new Random().nextInt(prizes.size()));
IO.println(prize);
}Результат:
mugЧастая ошибка
Перемешивать неизменяемый список:
void main() {
Collections.shuffle(List.of(1, 2, 3));
}Результат:
Exception in thread "main" java.lang.UnsupportedOperationExceptionСкопируйте его в new ArrayList<>(...).
Функции из этого ответа
- Collections.shuffle() — Перемешивает элементы списка в случайном порядке.
- Random — Генератор случайных чисел: целые в диапазоне, дробные, boolean.