我有一个返回某种字符串的方法。我想将个别单词存储在HashMap中出现次数?
例如,我有一个字符串 - “今天天气晴朗,今天不会下雨”。现在我的hashmap应该看起来像
{其中:2,a:1,晴天:1,日:1,今天:2,不是:1,要:1,下雨:1}
我该怎么办?
PS:我知道如何使用HashMaps。在这种情况下我的问题是我不知道如何解析给定的字符串并存储具有出现次数的单词。
答案 0 :(得分:1)
尝试这样的事情:
String text = "Its a sunny day today Its not gonna rain today";
Map<String,Integer> map = new HashMap<String, Integer>();
for( String word : text.split(" ")) {
Integer i = map.get(word);
if( i == null ) {
map.put(word, 1);
} else {
map.put(word, i+1);
}
}
答案 1 :(得分:0)
这是使用匿名类处理值初始化的变体:
// customized version of Map that doesn't return null from get()
Map<String, Integer> map = new HashMap<String, Integer>() {
@Override
public Integer get(Object key) {
return containsKey(key) ? super.get(key) : 0;
}
};
String s = "Its a sunny day today Its not gonna rain today";
for (String word : s.split(" "))
map.put(word, map.get(word) + 1); // use is simple
输出:
{not=1, Its=2, sunny=1, a=1, today=2, day=1, rain=1, gonna=1}
它与标准方法的行数大致相同,但通过将处理首次出现的单词的逻辑推入地图,可以更轻松地使用它。
您可能希望将输入的大小写更改为全部小写,因此“其”和“它”是“相同”的单词。