Структура данных для случайного поиска слов - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь создать игровое приложение на основе слов на Java.Я просмотрел некоторые существующие вопросы и получил представление о том, как получить список слов.Некоторые из упомянутых мной вопросов:

Как выбрать случайное английское слово из списка

Случайный выбор слова

Мой мотив - создать случайное слово.После загрузки списка слов в виде текстового файла я пытаюсь сгенерировать

Map<String, Integer> m = new HashMap<String, Integer>();

, который может дать мне слово, поскольку я могу запросить его, используя сгенерированное случайное целое число.

Эторекомендуемый подход или есть лучший способ генерировать случайное слово из списка слов?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 08 февраля 2011

Вставьте список слов в массив или ArrayList и выберите случайный индекс.С ArrayList легче работать, так как он может расти динамически при чтении файла словаря.

1 голос
/ 08 февраля 2011
  1. Предложенная карта не достигает вашей цели, поскольку HashMaps позволяют получить доступ к значению, связанному с данным ключом, не позволяет получить доступ к ключу, связанному со значением. Поэтому, если вы используете HashMap, он должен быть Map<Integer, String>

  2. Основным преимуществом HashMap над другими структурами данных является постоянное время поиска: независимо от того, насколько велика карта, время, необходимое для получения значения для данного ключа, остается неизменным. Сравните это с неупорядоченным списком ArrayList, где время, необходимое для поиска элемента, может увеличиться с увеличением размера List. Однако, так как вы не ищете конкретное слово, просто любое слово, преимущество HashMap не распространяется на ваш случай.

  3. Как уже говорили другие, лучший подход выглядит так:

ArrayList words = new ArrayList ();

// добавить все слова

Random r = new Random () // Объект для генерации случайных чисел

String randomWord = words.get (r.nextInt (words.size ()));

1 голос
/ 08 февраля 2011

вы можете использовать List или даже массив String и заполнить его списком больших слов, а затем сгенерировать случайное число, а затем выбрать слово из списка, используя это случайное число в качестве индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...