假如我们现在有一需求,需要统计一个字符串中各个字母出现的频率,然后从中找出频率最高的字母。让我们先来看看jdk8之前的写法。
public static void main(String[] args) {
String str = "hello java, i am vary happy! nice to meet you";
// jdk1.8之前的写法
HashMap result1 = new HashMap<>(32);
for (int i = 0; i < str.length(); i++) {
char curChar = str.charAt(i);
Integer curVal = result1.get(curChar);
if (curVal == null) {
curVal = 1;
} else {
curVal += 1;
}
result1.put(curChar, curVal);
}
}
但是jdk8后,map给我们提供了更为便捷的接口方法,那就是本文要说的重点compute方法。
Map map = new HashMap<>(32);
String str = "hello java, i am vary happy! nice to meet you";
for(char c:str.toCharArray()){
map.compute(String.valueOf(c),(k,v)->v==null?1:v+1);
}
比如判断品牌报名的次数,也可以用如下方法
//key:brandId value:次数
Map appliedBrandCountMap = new HashMap<>();
for (Long targetBrandId : brandIdList) {
if (targetBrandId.equals(Long.valueOf(brandId))) {
appliedBrandCountMap.compute(brandId, (k, v) -> v == null ? 1 : v + 1);
}
}