23 января 2020
При разработке приложений иногда бывает необходимо выбрать случайный элемент из некоторого множества. Предположим, что у нас есть список фруктов и нам нужно выбрать случайным образом один из них.
Сначала создадим генератор случайных значений SecureRandom. Можно также использовать и обычный Random, но первый выдаёт более случайные значения.
Затем мы воспользуемся методом random.nextInt(). Он возвращает целые числа в диапазоне от 0 (включительно) до указанной верхней границы. При этом само значение верхней границы исключается. В нашем примере мы передаём в этот метод количество элементов в списке (3), и он может вернуть одно из следующих значений: 0, 1 или 2. Сам элемент мы получим просто обратившись к списку по сгенерированному случайному индексу.
Но что если нам нужно получить несколько случайных элементов и при этом элементы не должны повторяться?
Данный метод на вход принимает набор Set всех возможных вариантов (т.е. там гарантированно нет дублирующихся строк) и кол-во элементов, которое нужно из него выбрать случайным образом.
Опять-таки создаём объект SecureRandom, а также новый список на основе исходного, из которого будем удалять уже выбранные элементы. Далее просто проходим в цикле нужное количество итераций, выбирая случайный элемент аналогично первому примеру. И в конце каждой итерации удаляем из созданного нами списка уже выбранный элемент.
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, H2, Linux, Hibernate, Collections, Stream API, многопоточность, чат-боты, нейросети, файлы, devops, Docker, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.