У меня есть около 2500 коротких фраз в файле. Я хочу быть в состоянии найти фразы, поскольку я печатаю возможные их подстроки. Мое приложение имеет текстовое поле и список фраз. Текстовое поле изначально пустое, а список содержит все 2500 фраз, поскольку пустая строка является подстрокой для всех из них. Когда я набираю текстовое поле, список обновляется, так что он всегда содержит только фразы, которые содержат значение текстового поля в качестве подстроки.
На данный момент у меня есть одно из мультимапов Google, а именно:
LinkedHashMultimap<String, String>
с каждой возможной подстрокой, сопоставленной с ее возможными совпадениями. Это занимает некоторое время для загрузки (около секунды), и я думаю, что оно должно занимать довольно много места (что может стать проблемой в будущем). Однако при поиске это происходит очень быстро.
Есть ли способ, которым я мог бы сделать это с другой структурой данных или стратегией, которая была бы быстрее загружаться и занимать меньше места (возможно, за счет скорости поиска)?