2015-01-17 2 views
0

Я разрабатываю слово-игру с libgdx, и у меня есть список слов для использования в моей игре. Мне нужно сохранить эти слова в приложении. Я не могу использовать SQLite, потому что я также хочу, чтобы моя игра работала на IOS. Поэтому я решил использовать Json, и я использовал код ниже. В моем json-файле есть сто тысяч слов.Libgdx Поиск текста в файле Json

FileHandle file = Gdx.files.internal("data/word.json"); 
Json json = new Json(); 
ObjectMap<String, Data> dataMap = json.fromJson(ObjectMap.class, file); 

Но загрузка занимает слишком много времени и потребляет слишком много памяти естественным образом. Я хочу только получить случайное слово из файла Json, и поиск слова существует в Json-файле. Неправильно загружать весь файл только для этих двух простых операций.

Какая для них лучшая реализация? Является ли только вариант Json в моей ситуации?

Заранее спасибо.

+0

Возможно, вам стоит подумать о другом хранилище (что-то вроде текстового файла, одного слова за строкой, фиксированного количества строк) и использовать это. –

+0

@RC. В этом случае, когда я использую текстовый файл, долгое время загрузки и проблема памяти будут существовать. Я ошибаюсь? – PepeDeLew

+0

Возможно, вы немного выиграли от чтения файла, потому что вам не нужно читать весь файл большую часть времени, вы выигрываете на хранилище, потому что нет объектной карты, и вы выигрываете на время обработки, потому что нет разбора JSON, но без тестов, это всего лишь гипотеза. Вы также можете проиндексировать весь файл и добавить индекс в приложение –

ответ

1

Вы можете просто создать текстовый файл со словами, например. по одной в строке, в алфавитном порядке. После запуска приложения вы можете прочитать весь файл, указав простой индекс, например. отмечая начальную позицию слов, начинающихся с буквы «b». Затем вы можете использовать индекс для приближения к слову, которое вы ищете в файле. Вы можете улучшить индекс, чтобы добавить больше букв, но каждый из них имеет стоимость памяти.

Смежные вопросы