Tengo un gran conjunto de direcciones URL y quiero implementar una autocompletación. No me gusta la complejidad del enfoque ingenuo, ya que es lineal con el tamaño del conjunto:¿Cómo crear un índice de prefijo simple en Java?
for(String url: urls) if(url.startsWith(input) {doSomething();}
Ahora sé que en un hash Conjunto, la función "contiene()" obras en "O (1) "pero no hay" containsPrefix() ". ¿Hay una manera simple sin usar una gran biblioteca como Lucene o codificarla yo mismo? No tendría problemas para hacerlo, pero parece excesivo para un problema tan simple, así que quiero saber si existe una solución simple existente :-)
De mis clases de informática recuerdo un árbol que consta de fragmentos de cuerdas pero Olvidé cómo se llamaba. Funcionó así:
[car, care, carrot,carrotville]->
car
|
-/
-e
-rrot
|
----ville
P.S .: Como llamar en los métodos que devuelve todas las cadenas que una cadena es el prefijo de? Al igual que si a es el prefijo de b, ¿qué es b a a?
¿Qué quieres hacer? ¿Agregar automáticamente un texto al comienzo de cada cadena? –
Quiero saber de qué cadenas es un prefijo mi cadena, así que puedo darles como sugerencias de autocompletado. –