Поиск слова в текстовом файле списка слов в Android

Друзья У меня есть список слов, отсортированных в алфавитном порядке в текстовом файле (2 МБ), содержащем 300000 слов (1 слово в строке). Поскольку он уже отсортирован, я хочу сделать быстрый поиск строк, который должен быть точным и без учета регистра. Есть идеи, как это сделать?

Должен сделать это как можно быстрее и без учета регистра. Например,

Если пользователю необходимо найти слово "MAT" из текстового файла, вывод должен быть mat/MAT и не должен включать слова "mate", "matted" или любые другие подобные слова. Вывод должен быть создан в наименьшее время.

РЕДАКТИРОВАТЬ - мне нужно решение, такое как класс или алгоритм, чтобы сделать это, как Pattern/ Matcher или BufferedReader/Scanner и т. Д.

2 ответа

Если ваш список слов уже отсортирован, самый быстрый способ, который я могу придумать, - это использовать бинарный поиск. Что касается чувствительной к регистру части, просто примените ToUpper() или ToLower() к каждой строке (входной и той, которую нужно сравнить в вашем файле), и проблема решена.

Хотя я согласен с другими, вы должны просто использовать базу данных для этого.

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

Например, таблица для каждой буквы алфавита, только слова начинаются с этой буквы. По сути, это уже сокращает поиск до 300 000 / 20 (26 - минус несколько редких букв с очень небольшим количеством слов).

Это, вероятно, уже сделало бы это для 300 000 слов, но если нет, то вы можете даже пойти дальше и сделать несколько длинных разделений.

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

Другие вопросы по тегам