0

これは書くのが簡単な質問ではありません。それには多くの角度があります。私は、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
    }

基本的にここで行っているのは、「サンプル」という単語をツリーに追加することです。キーが文字で、値が別の HashMap である HashMap を作成します。(ネストされたハッシュマップです。これが適切なTrieであるかどうかは完全にはわかりませんが、気にしないでください)。

私が抱えている問題は、value.toCharArray (最後の文字 c が何であれ) の最終値で停止したいということです。最後の文字で停止しないと、ネストされた HashMap が追加され続け、実際に単語が挿入されることはありません。イテレータを作成して hasNext() 関数を使用しようとしましたが、何も機能しませんでした。

Iterator<Character> iter = value.toCharArray().iterator(); //"cannot invoke iterator on the array type char[]"

イテレータを配列に通すことができません。イテレータは配列と互換性がありませんか? リストまたは配列リストのみ?この場合、 hasNext() 機能を使用できるように、文字配列をリストに入れる簡単な方法はありますか?

4

4 に答える 4

0

通常の for ループ構造を使用して、反復子をまったく使用しないこともできます。

int length = value.toCharArray().length;
for (int i = 0; i < length; i ++) {
    if (i == length - 1) {
        //Last Element
    }
}
于 2013-04-09T12:08:07.390 に答える
0

Arrays.asList(value.toCharArray());トリックを行う必要があります。

于 2013-04-09T12:06:56.710 に答える