Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как перемешать список

Короткий ответ

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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.