0

ファイル内のキーワードを読み取り、頻度に基づいて並べ替えるプログラムを使用しています。同じために Map データ構造を使用しています。しかし、エントリを繰り返しても、その数が増えないという問題に直面しています。したがって、単語がファイル内で繰り返される場合、マップ内の前のエントリの値をインクリメントするのではなく、データ構造内の別の場所に保存されます。以下の私のコードを見つけてください。それが私が試したことです。また、一致が「」または「」であるかどうかを確認していますが、それはハッシュマップに保存されていませんが、まだカウントされています。

Pattern p = Pattern.compile("[a-zA-Z]*",Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(handlerContent);
    while(m.find() ) //&& (m.group().length()>1)
    {
         boolean blnExists = keyword_counts.containsValue(m.group());
         if(blnExists==true)
         {
             if(m.group()!="" || m.group()!=" ")
             {
                 System.out.println("Repeat");
                 keyword_counts.put(m.group(), keyword_counts.get(m.group()+1));
                 System.out.println(m.group()+" "+keyword_counts.get(m.group()) );
             }
         }
         else
         {
             if(m.group()!="" || m.group()!=" ")
             {
                 keyword_counts.put(m.group(), 1);
                 System.out.println(m.group()+" "+keyword_counts.get(m.group()) );
             }
         }                  
    }
4

3 に答える 3

1

テストはおそらく次のようになります。

 keyword_counts.containsKey(m.group());

またはequalsの代わりに文字列を比較するために使用する必要がありますが、それが問題の理由ではありません。==!=

于 2012-04-19T07:01:57.183 に答える
1

Java では、「=」を文字列で使用しないでください。代わりに「equals」メソッドを使用してください。

于 2012-04-19T07:02:09.900 に答える
1

あなたのステートメントboolean blnExists = keyword_counts.containsValue(m.group()); では、キーの代わりに値をチェックしています。

これを試して:

boolean blnExists = keyword_counts.containsKey(m.group());

if(m.group() != null && !"".equals(m.group().trim()))の代わりに使用します

if(m.group()!="" || m.group()!=" ")
于 2012-04-19T07:04:35.600 に答える