我的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.有什么问题?
答案 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);