假如我们现在有一需求,需要统计一个字符串中各个字母出现的频率,然后从中找出频率最高的字母。让我们先来看看jdk8之前的写法。
class="java" name="code"> public static void main(String[] args) {
String str = "hello java, i am vary happy! nice to meet you";
// jdk1.8之前的写法
HashMap<Character, Integer> 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<String,Integer> 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<String,Integer> appliedBrandCountMap = new HashMap<>();
for (Long targetBrandId : brandIdList) {
if (targetBrandId.equals(Long.valueOf(brandId))) {
appliedBrandCountMap.compute(brandId, (k, v) -> v == null ? 1 : v + 1);
}
}
?
?