hashmap中的特色数字

时间:2016-02-14 06:56:01

标签: java

我是java的新手,我需要知道如何在HashMap

中计算出与众不同的单词数量

我收到推文并将其存储到像

这样的字符串数组中
String [] words = {i, to , go , eat,know , i ,let , let , figure , eat};
HashMap <String,Integer> set=new HashMap();
for (String w:words)
{
  int freq=set.get(w);
  if (freq==null)
  {
     set.put(w1,1)
  }
else
     set.put(w1,freq+1) 
 }

让我们假设HashMap现在拥有我需要的所有单词 现在我怎样才能计算出与众不同的单词总数? 我可以在hashmap中看到值为1的单词吗?

我试过检查

if (set.containsvalue(1))
int dist +=set.size();

但没有奏效!

4 个答案:

答案 0 :(得分:1)

    int dist = 0;
    for (int i : set.values())
        if (i == 1)
            ++dist;

答案 1 :(得分:0)

在将单词设置为set之前,应检查密钥是否存在。如果密钥存在,那么您应该增加该值。

答案 2 :(得分:0)

以下代码段错误:

> v2 <- rep(c('02/28/2013', '03/01/2013', '02/28/2013'), c(3, 2, 1))
> as.data.frame(cumsum(table(v2)))
           cumsum(table(v2))
02/28/2013                 4
03/01/2013                 6
> r = rle(v2); data.frame(value=r$values, cumlen=cumsum(r$lengths))
       value cumlen
1 02/28/2013      3
2 03/01/2013      5
3 02/28/2013      6

freq 被声明为 int ,无法应用 null 检查。 null 检查适用于参考。

此外,我认为您在 w w1

之间存在拼写错误

正确的代码是:

  int freq=set.get(w);
  if (freq==null)
  {
     set.put(w1,1)
  }

现在,如果您遍历地图以检查值 1 的键,您将获得不同的词语。

答案 3 :(得分:0)

您只需遍历所有地图并使用freq == 1

获取密钥
int unique = 0;
for(String word : set.keySet()) {
    int freq = set.get(word);
    if(freq == 1) {
        unique++;
    }
}
System.out.println(unique);