0

HashMaps に関して私が得た簡単な質問です。基本的に私は2つの文字列を持っています。どちらも、各文字列に一定数の類似した単語があります。次の HashMap メソッドを使用すると、各文で特定の単語が何回出現するかをカウントできます。私の問題は、このメソッドをメイン メソッドで返すことです。HashMap メソッドは次のとおりです。

public HashMap<String, Integer> getWordCounts(){
    HashMap<String, Integer> map = new HashMap<String, Integer>();

    for (int i = 0; i < this.getWordArray().length; i++){
        String key = getWordArray()[i];
        Integer count = map.get(key);

        if(count == null){ 
            count = 1;
        }else{
            count++; 
        }   

        map.put(key, count);

    }
        return map;
}

これは、これまでに return メソッドで取得したものです。

        HashMap<String, Integer> hashMapAdd = map.getWordCounts();
    for(HashMap.Entry <String, Integer> entry : plato.entrySet()){
        System.out.println(entry.getKey()+ "," + entry.getValue());
    }

return メソッドで正しい方向に進んでいますか? 間違った方向に進んでいるような気がします。

みんなありがとう!

4

1 に答える 1

0

関数のロジックに加えて(私はそれを分析していません)、あなたが尋ねたことについて...
はい、このメソッドは、JavaでこのようにHashMapを構築して返すのに完全に問題ありません。何年もの間、私も時々混乱しましたが、JVM のガベージ コレクターがこの手法を使用して C++ で発生する可能性のある問題を処理するため、Java でローカル オブジェクトを返すことはまったく問題ないことを理解しました。これで、ハッシュマップが得られました。ハッシュマップを繰り返し処理して出力するには、次のようなループを使用します。

for(String key:hashMapAdd.keySet())
     System.out.println(key+ "," + hashMapAdd.get(key));

少なくとも私にとっては、これは混乱が少なく簡単です。HashMap の詳細については、 https ://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html を参照してください。

PS: map.getWordCounts(); 行が 疑わしいようですが、このメソッドは map という名前のクラスにあると想定しています。ただし、その場合、名前マップで HashMap を作成することはできません。このコード行でマップを使用している理由を調べる必要があります。

于 2015-10-09T09:56:37.717 に答える