利用java的hashmap内置的函数merge,可以一句话实现:如果存在,则加1;如果不存在,则新建该对,并把初值设置为1。

1
2
3
4
5
6
7
8
9
10
11
private static Integer addOne(Integer value) {
return value+1;
}
public static void main(String[] args) {
HashMap<String, Integer> te1=new HashMap<String, Integer>();
te1.put("age", 11);
System.out.println(te1.merge("age", 1, (value, newValue)->addOne(value)));
System.out.println(te1.merge("aegrt", 1, (value, newValue)->addOne(value)));
System.out.println(te1.get("age"));
System.out.println(te1.get("aegrt"));
}

结果如下:

1
2
3
4
12
1
12
1

通过简单的改动,可以把很多的hashmap进行合并,合并成一个hashmap,即统计总的词频:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private Integer add(Integer value, Integer addNum) {
return value + addNum;
}

......

for (AnalReview analReview : reviews) {
HashMap<String, Integer> revFreq = analReview.getFrequency();//获取每个评论的词频统计
Iterator iter = revFreq.entrySet().iterator();
while (iter.hasNext()) {//遍历所有的词和它的次数
HashMap.Entry entry = (HashMap.Entry) iter.next();
String string = (String) entry.getKey();
Integer sfre = (Integer) entry.getValue();
frequency.merge(string, sfre,
(value, newValue) -> add(value, sfre));//要么相加,要么新建并设置初值
}
}

这个功能就像python里的一行代码一样:counts[word]=counts.get(word,0)+1其中counts是字典



编程语言      HashMap Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!