Ich habe eine große Menge von Strings und möchte dafür eine automatische Suggestionsfunktion erstellen.
Angenommen, die Menge ist ["foo", "fighter"]
Das Eingeben von "f"
sollte beide Werte zurückgeben und das Eingeben von "fo"
sollte nur "foo"
zurückgeben.
Momentan durchlaufe ich nur das Set und filtere die Ergebnisse heraus, indem ich startsWith
aufruft, aber es ist zu langsam.
Der Standard TreeSet
mit seinen Teilmengenfunktionen hilft hier nicht viel, da er nur einen RB-Baum implementiert.
Gibt es eine effiziente Lösung in der Java-API oder muss ich meine eigene Set
-Implementierung erstellen?
Bearbeiten:
Meine Implementierung sieht so aus, mit Andrey Naumenkos Trie Datenstrukturen . Beachten Sie, dass Sie die Array-Größe erhöhen müssen, wenn Sie erweiterte ASCII-Zeichen verwenden möchten. Wenn Sie List
anstelle von Map
verwenden, erhalten Sie die Ergebnisse in einer sortierten Reihenfolge.
Tags und Links algorithm java dictionary subset substring