Помогите Рандомный ключ

Novichock

Активный участник
Пользователь
Баллы
76
Получаю ключи так getConfig().getConfigurationSection("names").getKeys(false));Надо из всего этого получить рандомную строку.
 
Получаю ключи так getConfig().getConfigurationSection("names").getKeys(false));Надо из всего этого получить рандомную строку.
Заноси ключи в аррай лист, генерируй рандомное число, бери ключ с числом.
При генерации рандомного числа ограничивай его размером количеством ключей.
 
Последнее редактирование:
Заноси ключи в аррай лист, генерируй рандомное число, бери ключ с числом.
При генерации рандомного числа ограничивай его размером ключей.
Спасибо.Я пытался в обычный лист не получилось,подумал что нужны особые заморочки с этим.
 
Понял свою ошибку,вы думаете что names оформлено как массив."names" я использовал в качестве примера.
Конструкция вот такая:
Код:
names:
  blaka:
    count: 20
    enabled: true
  example:
    count: 2
    enabled: false

Ты уж определись :)
Я предполагал что смогу словить двух зайцев сразу то есть и список вынуть и получить рандомную строку.
 
Я предполагал что смогу словить двух зайцев сразу то есть и список вынуть и получить рандомную строку.
Да какая разница.
Java:
// config.getConfigurationSection("names").getKeys(false)
// возвращает множество доступных ключей (Set<String>):
final Set<String> set = config.getConfigurationSection("names").getKeys(false);
// Множество не имеет порядка. Конвертируешь в список, чтобы был порядок.
final List<String> list = new ArrayList<>(set);
// Количество элементов в множестве или списке:
final int size = list.size();
// Случайный элемент от 0 до size - 1:
final int rnd = new Random().nextInt(size);
// Сам элемент:
final String result = list.get(rnd);

Многие фанатеют по укорачиванию строк:
Java:
final Set<String> set = config.getConfigurationSection("names").getKeys(false);
final String result = new ArrayList<>(set).get(new Random().nextInt(set.size));
, но на самом деле это даже вредно, потому что код становится менее поддерживаемым.
 
Последнее редактирование:
Да какая разница.
Java:
// config.getConfigurationSection("names").getKeys(false)
// возвращает множество доступных ключей (Set<String>):
Set<String> set = config.getConfigurationSection("names").getKeys(false);
// Множество не имеет порядка. Конвертируешь в список, чтобы был порядок.
List<String> list = new ArrayList<>(set);
Количество элементов в множестве или списке:
int size = list.size();
Случайный элемент от 0 до size - 1:
int rnd = new Random().nextInt(size);
Сам элемент:
String result = list.get(rnd);
Большое тебе спасибо и всем остальным кто помог.
 
Назад
Верх