这不是一个容易写的问题,它有很多角度。我正在尝试用 Java 编写一个非常基本的 Trie 来帮助自己理解这个概念及其用途。我不完全确定我做对了,但不管我遇到以下问题:
for(char c: value.toCharArray()){
TrieNode nodeChecker = rootNode.checkValue(c); //checks currentNode to see if characters are keys in HashMap
if(nodeChecker == null){
rootNode = rootNode.add(c); //if not, adds the character as a key, returns another TrieNode
}
基本上我在这里所做的是将单词“sample”添加到树中。我创建了一个 HashMap,键是字符,值是另一个 HashMap。(所以嵌套的哈希映射,这是我不完全确定这是一个正确的 Trie 的地方,但没关系)。
我遇到的问题是我想停止 value.toCharArray 的最终值(无论最后一个字符 c 是什么)。如果我不在最后一个字符上停下来,它会继续添加嵌套的 HashMaps 并且从未真正放入这个词。我试图创建一个迭代器并使用 hasNext() 函数,但我尝试的任何方法都不起作用。
Iterator<Character> iter = value.toCharArray().iterator(); //"cannot invoke iterator on the array type char[]"
我无法让迭代器通过数组,迭代器与数组不兼容吗?只有列表或数组列表?如果是这种情况,是否有一种简单的方法可以将字符数组放入列表中,以便我可以使用 hasNext() 功能?