Como criar um índice de prefixo simples em Jav

Tenho um grande conjunto de URLs e quero implementar um preenchimento automático. Não gosto da complexidade da abordagem ingênua, pois é linear com o tamanho definido:

for(String url: urls) if(url.startsWith(input) {doSomething();}

Agora eu sei que em um Hash Set, a função "contains ()" funciona em "O (1)", mas não existe "containsPrefix ()". Existe uma maneira simples sem usar uma grande biblioteca como Lucene ou codificá-la eu mesmo? Eu não teria nenhum problema em fazê-lo, mas parece um exagero para um problema tão simples, então eu quero saber se existe uma solução simples existente: -)

Nas minhas aulas de ciência da computação, lembro de uma árvore que consiste em fragmentos de string, mas esqueço como ela foi chamada. Funcionou assim:

[car, care, carrot,carrotville]->

car
|
-/
-e
-rrot
  |
  ----ville

P.S .: Como chamo os métodos que retornam todas as strings das quais uma string é prefixo? Como se a é o prefixo de b, o que é b para a?

questionAnswers(8)

yourAnswerToTheQuestion