Un’implementazione java della struttura dati prefisso Trie.
Introduzione
I tentativi sono strutture di dati ordinate ad albero che forniscono una ricerca rapida dell’ordine O(k)
dove k
è la lunghezza della chiave. Per saperne di più su trie qui.
Motivazione
Questo è stato inizialmente progettato per essere utilizzato nella mia app Android, T9 App Launcher per cercare rapidamente l’elenco delle applicazioni installate e lanciarle.
API pubbliche
Attualmente ci sono 3 implementazioni pubbliche tra cui è possibile scegliere.
-
MapTrie
:HashMap
implementazione trie sostenuta. -
SortedTrie
:TreeMap
l’implementazione di trie supportata che restituisce suggerimenti e valore è in ordine crescente. -
T9Trie
: Implementazione helper per memorizzare e recuperare suggerimenti per la sequenza T9.
Esempio di utilizzo
Creazione di un semplice trie e ottenere suggerimenti.
final MapTrie<String> trie = new MapTrie<>();trie.insert("Hello", "Hello");trie.insert("Help", "Help");trie.insert("Has", "Has");trie.insert("Have", "Have");trie.insert("Had", "Had");trie.insert("Hadn't", "Hadn't"); // Print to stdouttrie.print();
La chiamata precedente print()
stamperebbe la struttura ad albero in questo modo.
└── h ├── e │ └── l │ ├── l │ │ └── o'Hello │ └── p'Help └── a ├── s'Has ├── v │ └── e'Have └── d'Had └── n └── ' └── t'Hadn't
Ora proviamo a trovare tutte le parole che iniziano con ha
. Ricorda che, per impostazione predefinita, le chiavi sono case insensitive.
List<String> suggestions = trie.getValueSuggestions("ha");System.out.print(suggestions.toString());
Questo stamperà sulla console. Il valore è lasciato intatto.
Contributo
Se sei uno sviluppatore e vuoi contribuire, considera di fare una richiesta pull. Apprezzerei qualsiasi critica riguardo al codice o all’implementazione in generale.
Licenza
Questo progetto è concesso in licenza sotto licenza Apache 2.0.