使用hashmap为数组中的每个字符串实例添加1。

时间:2013-11-11 12:09:10

标签: java arrays foreach hashmap

我的hashmap类如下:

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时,我希望它将数组中的每个单词放入hashmap中,但是对于duplicates,将1加到整数中。例如“如果你看到这很酷,你会把它作为

放入散列图
if  1
you 2
see 1
this 1
are 1
cool 1

但是我的代码正在和你一起进入hashmap 1.有什么问题?

4 个答案:

答案 0 :(得分:2)

在你的代码中,对于你看到的每个单词,你都会输入+1(正数为1的int值)。

您需要更新值,而不是覆盖它。

for (String stuff : quoteOne) {
    Integer oldVal = map.get(stuff);
    if (oldVal == null) {
        oldVal = 0;
    }
    map.put(stuff, oldVal+1);
}

答案 1 :(得分: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);
           }
        }

答案 2 :(得分:0)

如果提供相同的密钥,HashMap将替换值。

来自HashMap的Java文档#put

将指定的值与此映射中的指定键相关联。如果地图以前包含该键的映射,则替换旧值。

尝试这样的事情

for(String w : words) {
    Integer i = wordCounts.get(w);
    if(i == null) wordCounts.put(w, 1);
    else wordCounts.put(w, i + 1);
}

答案 3 :(得分:0)

        for(String i: quoteOne)
            map.put(i, (map.get(i)!=null)? map.get(i)+1:1);