使用键出现的次数向HashMap添加单词

时间:2016-04-26 17:22:56

标签: java hashmap maps

我正在编写一个Java程序,它将网站上的所有单词添加到HashMap中,然后为它们分配它们在页面上出现的次数的关键字。例如,如果我在只有单词" hello,java,coffee,java"的页面上运行它,输出将是

Java:2 咖啡:1 你好:1

这也忽略了我不想要包含的某些词。这是我到目前为止所拥有的。

Map<String, Integer> found = new HashMap<>(); // (word,frequency)
Matcher match = Pattern.compile(word_pattern).matcher(content);

while (match.find()) {

  // Get the net word in lowercase
  String word = match.group().toLowerCase();

  //If not the set of words to ignore, add to the found Map
  if(!ignore.contains(word))
      found.put(word,       );  
  }

 System.out.println(found);

}

第二个参数,一个int,我假设应该在我将单词添加到HashMap之前计算。

found.put(word,  int   );  

但我不确定在保持O(nlogn)时间的同时如何准确地添加单词的出现次数。

3 个答案:

答案 0 :(得分:2)

如果你有Java 8,你可以这样做:

found.merge(word, 1, Integer::sum);

答案 1 :(得分:1)

试试这个:

if(!found.containsKey(word)){
    found.put(word, 1);
}else{
    found.put(word, found.get(word) + 1);
}

答案 2 :(得分:1)

这看起来像是一项任务,所以我会指出正确的方向,而不是给出明确的代码。

处理单词时,需要查看HashMap以查看它是否已存在。如果是,请在当前计数中添加一个并更新Map。如果它没有出现在Map中,请将其添加为1。