arunkumar9t2 / trie

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.