o implementare java a structurii de date Trie Prefix.
Introducere
încercările sunt structuri de date bazate pe arbori ordonate care oferă căutarea rapidă a ordinului O(k)
unde k
este lungimea cheii. Citiți mai multe despre trie aici.
motivație
aceasta a fost inițial construit pentru a utiliza în aplicația mea Android, T9 App Launcher pentru a căuta rapid prin lista de aplicații instalate și să le lanseze.
API-uri publice
în prezent, există 3 implementări publice din care pot fi alese.
-
MapTrie
:HashMap
implementarea trie susținută. -
SortedTrie
:TreeMap
implementarea Trie susținută care returnează sugestiile și valoarea este ordinea de sortare ascendentă. -
T9Trie
: punerea în aplicare Helper pentru a stoca și de a prelua sugestii pentru secvența T9.
exemplu de utilizare
crearea unui trie simplu și obținerea de sugestii.
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();
apelul de mai sus print()
ar imprima structura arborelui astfel.
└── h ├── e │ └── l │ ├── l │ │ └── o'Hello │ └── p'Help └── a ├── s'Has ├── v │ └── e'Have └── d'Had └── n └── ' └── t'Hadn't
acum să încercăm să găsim toate cuvintele care încep cu ha
. Amintiți-vă că, în mod implicit, tastele sunt insensibile la majuscule.
List<String> suggestions = trie.getValueSuggestions("ha");System.out.print(suggestions.toString());
aceasta va imprima pe consolă. Valoarea este lăsată neatinsă.
contribuție
dacă sunteți un dezvoltator și ar dori să contribuie Vă rugăm să ia în considerare a face o cerere de tragere. Aș aprecia orice critică în ceea ce privește codul sau punerea în aplicare în general.
Licență
acest proiect este licențiat sub Licența Apache 2.0.