-1

私のハッシュマップクラスは次のとおりです。

public HashMap<String, Integer> getWordCounts() {
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    String[] quoteOne = getWordArray();
    for (String stuff : quoteOne) {
        map.put(stuff, +1);
    }
    return map;
}

quoteOne を通過するときに、配列の各単語をハッシュマップに入れたいのですが、重複の場合は整数に 1 を追加します。たとえば、「これを見たらあなたはクールです」は次のようにハッシュマップに入れられます

if  1
you 2
see 1
this 1
are 1
cool 1

しかし、私のコードはそれをハッシュマップに出力しています 1.何が問題なのですか?

4

4 に答える 4

1

あなたのforループは

 for (String stuff : quoteOne) {
     if(map.get(stuff) != null){
          int i = map.get(stuff);
          map.put(stuff,i+1)
        }else{
           map.put(stuff, 1);
           }
        }
于 2013-11-11T12:14:48.120 に答える
0
        for(String i: quoteOne)
            map.put(i, (map.get(i)!=null)? map.get(i)+1:1);
于 2013-11-11T12:35:55.613 に答える
0

同じキーが提供されている場合、HashMap は値を置き換えます。

HashMap#put の Java doc から

指定された値をこのマップ内の指定されたキーに関連付けます。マップに以前にキーのマッピングが含まれていた場合、古い値が置き換えられます。

このようなことを試してください

for(String w : words) {
    Integer i = wordCounts.get(w);
    if(i == null) wordCounts.put(w, 1);
    else wordCounts.put(w, i + 1);
}
于 2013-11-11T12:15:12.517 に答える