我正在编写一个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)时间的同时如何准确地添加单词的出现次数。
答案 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。