Поскольку список достаточно мал для загрузки в память, отсортируйте его, а затем выполните бинарный поиск, используя статический метод java.util.Collections.binarySearch (). Это возвращает индекс и работает независимо от того, находится ли точная строка в списке или нет (хотя, если это не так, она возвращает отрицательное число, поэтому обязательно проверьте это). Затем, начиная с этого индекса, просто итеративно вперед, чтобы найти все строки с этим префиксом. Как хороший побочный эффект, полученный результат будет в алфавитном порядке.
Чтобы сделать все это без учета регистра, не забудьте преобразовать в нижний регистр при загрузке списка и, конечно, преобразуйте префикс в нижний регистр перед поиском.