Ich möchte alle in Trie Data Structure gespeicherten Wörter drucken oder abrufen. Das ist, weil ich Edit-Abstand zwischen einem falsch geschriebenen Wort und einem Wort in Dictionary berechnen möchte. Daher dachte ich daran, jedes Wort von Trie abzurufen und Entfernung zu berechnen. Aber ich kann nicht abrufen. Ich möchte ein Code-Snippet dafür. Dies ist, wie ich die Trie mit HashMap
in Java implementiertWie drucke ich alle Wörter, die in einem Tree gespeichert sind, wo Trie mit Hashmap in Java implementiert wurde?
Jetzt sagen Sie mir, wie Sie Code zum Drucken aller Wörter in Trie gespeichert schreiben. Jede Hilfe wird sehr geschätzt
TrieNode.java
package triehash;
import java.io.Serializable;
import java.util.HashMap;
public class TrieNode implements Serializable {
HashMap<Character, HashMap> root;
public TrieNode() {
root = new HashMap<Character, HashMap>();
}
}
TrieDict.java
package triehash;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;;
import java.io.Serializable;
import java.util.HashMap;
import java.io.Serializable;
public class TrieDict {
public TrieNode createTree()
{
TrieNode t = new TrieNode();
return t;
}
public void add(String s, TrieNode root_node) {
HashMap<Character, HashMap> curr_node = root_node.root;
s = s.toLowerCase();
for (int i = 0, n = s.length(); i < n; i++) {
Character c = s.charAt(i);
if (curr_node.containsKey(c))
curr_node = curr_node.get(c);
else {
curr_node.put(c, new HashMap<Character, HashMap>());
curr_node = curr_node.get(c);
}
}
curr_node.put('\0', new HashMap<Character, HashMap>(0)); // term
}
public void serializeDict(TrieNode root_node)
{
try{
FileOutputStream fout = new FileOutputStream("/home/priya/NetBeansProjects/TrieHash/dict.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(root_node);
oos.close();
System.out.println("Done");
}catch(Exception ex){
ex.printStackTrace();
}
}
public void addAll(String[] sa,TrieNode root_node) {
for (String s: sa)
add(s,root_node);
}
public static void main(String[] args)
{
TrieDict td = new TrieDict();
TrieNode tree = td.createTree();
String[] words = {"an", "ant", "all", "allot", "alloy", "aloe", "are", "ate", "be"};
for (int i = 0; i < words.length; i++)
td.add(words[i],tree);
td.serializeDict(tree); /* seriliaze dict*/
}
}
@sigpwned .. Danke für Ihre Hilfe. Ich stehe jetzt vor einem anderen Problem. Der folgende Code funktioniert nicht String word1 = "ant" Set Wörter = ts.computeWords (tree.root); if (Words.contains (word1)) System.out.println ("Wort existiert"); –
user2281107
Hallo @ user2281107. Das hört sich nach einer separaten Frage an, also sollten Sie es wahrscheinlich als eine weitere Top-Level-Frage stellen. – sigpwned