Вы можете просто посмотреть на только что введенное письмо; если новая третья буква - «а», просто выбросьте все элементы без «а» в позиции три. Если пользователь удаляет письмо, вы должны повторно просмотреть весь исходный список и вернуть все ранее удаленные элементы.
Но что, если пользователь вставит несколько букв из буфера обмена, удалит несколько букв, выделив их, вставит или удалит одну или несколько букв где-то посередине?
Вам нужно следить за многими делами. Вы можете сделать метод с вновь введенной буквой и вернуться к полному повторному сканированию, если текст поиска изменился не так, как добавление одной буквы, но даже этот простой метод, вероятно, не стоит усилий, чтобы избежать нескольких десятков или сто строк сравнения. Как уже упоминалось, Trie или Patricia trie - это путь, если у вас действительно большие наборы данных или вы хотите быть очень быстрыми.