假如我们现在有一需求,需要统计一个字符串中各个字母出现的频率,然后从中找出频率最高的字母。让我们先来看看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); } }
?
?