我正在使用程序读取文件中的关键字并根据频率对其进行排序。我正在使用Map数据结构。 但我面临着问题,即使我重复参赛,他们的数量也没有增加。因此,如果在文件中重复一个单词,则将其存储在数据结构中的不同位置,而不是增加映射中前一个条目的值。请在下面找到我的代码。这就是我试过的。此外,我确定匹配是“”或“”它不存储在哈希映射中仍然计算。
Pattern p = Pattern.compile("[a-zA-Z]*",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(handlerContent);
while(m.find() ) //&& (m.group().length()>1)
{
boolean blnExists = keyword_counts.containsValue(m.group());
if(blnExists==true)
{
if(m.group()!="" || m.group()!=" ")
{
System.out.println("Repeat");
keyword_counts.put(m.group(), keyword_counts.get(m.group()+1));
System.out.println(m.group()+" "+keyword_counts.get(m.group()) );
}
}
else
{
if(m.group()!="" || m.group()!=" ")
{
keyword_counts.put(m.group(), 1);
System.out.println(m.group()+" "+keyword_counts.get(m.group()) );
}
}
}
答案 0 :(得分:1)
您的测试应该是:
keyword_counts.containsKey(m.group());
您应该使用equals
来比较字符串而不是==
或!=
,但这不是您出问题的原因。
答案 1 :(得分:1)
“=”不应与字符串一起使用。改为使用“等于”方法。
答案 2 :(得分:1)
在您的陈述中boolean blnExists = keyword_counts.containsValue(m.group());
你要检查价值而不是钥匙。
试试这个:
boolean blnExists = keyword_counts.containsKey(m.group());
并使用if(m.group() != null && !"".equals(m.group().trim()))
代替
if(m.group()!="" || m.group()!=" ")