Поиск слова в текстовом файле списка слов в Android
Друзья У меня есть список слов, отсортированных в алфавитном порядке в текстовом файле (2 МБ), содержащем 300000 слов (1 слово в строке). Поскольку он уже отсортирован, я хочу сделать быстрый поиск строк, который должен быть точным и без учета регистра. Есть идеи, как это сделать?
Должен сделать это как можно быстрее и без учета регистра. Например,
Если пользователю необходимо найти слово "MAT" из текстового файла, вывод должен быть mat/MAT и не должен включать слова "mate", "matted" или любые другие подобные слова. Вывод должен быть создан в наименьшее время.
РЕДАКТИРОВАТЬ - мне нужно решение, такое как класс или алгоритм, чтобы сделать это, как Pattern/ Matcher или BufferedReader/Scanner и т. Д.
2 ответа
Если ваш список слов уже отсортирован, самый быстрый способ, который я могу придумать, - это использовать бинарный поиск. Что касается чувствительной к регистру части, просто примените ToUpper() или ToLower() к каждой строке (входной и той, которую нужно сравнить в вашем файле), и проблема решена.
Хотя я согласен с другими, вы должны просто использовать базу данных для этого.
Ваш лучший способ, вероятно, состоит в том, чтобы правильно сохранить его в базе данных, таким образом, вы должны искать наименьшее количество данных.
Например, таблица для каждой буквы алфавита, только слова начинаются с этой буквы. По сути, это уже сокращает поиск до 300 000 / 20 (26 - минус несколько редких букв с очень небольшим количеством слов).
Это, вероятно, уже сделало бы это для 300 000 слов, но если нет, то вы можете даже пойти дальше и сделать несколько длинных разделений.
Сохранение всех ваших слов в базу данных может занять некоторое время, но это не может быть проблемой для вашего приложения.