Загрузка строк Android в массив - PullRequest
2 голосов
/ 19 ноября 2011

У меня есть список из 1000 слов. Мне нужно загрузить массив из n случайно выбранных слов из этого списка (повторы не допускаются). Каков наилучший способ сделать это?

Мои идеи:

1) Загрузите слова в R.arrays для создания массива String. Используйте collection.shuffle, чтобы перемешать массив, затем извлеките из него первые n записей. Сейчас у меня проблемы с памятью при загрузке исходного массива из 1000 слов с использованием этого метода.

2) Загрузите слова в текстовый файл, прочитайте каждое слово в массив String. Используйте тот же метод, чтобы получить первые n записей.

3) Жесткий код ввода слов в массив String (я бы, конечно, использовал скрипт, чтобы получить этот вывод). Используйте тот же метод, чтобы получить первые n записей.

Есть ли лучший способ?

1 Ответ

1 голос
/ 19 ноября 2011

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

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

  1. Создайте массив максимального размера n, назовите его w
  2. Открыть потоковый ридер для файла, содержащего 1000 слов
  3. Получить случайное число от 1 до 1000, набрать его k
  4. Поиск позиции k*s в потоке файла и получение следующих s символов
  5. Добавить слово к w, если оно еще не существует в массиве
  6. Если массив w заполнен (т. Е. Size = n), все готово, в противном случае вернитесь к шагу 3

Дайте нам знать, как оно идет. Удачного кодирования!

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