`
zy116494718
  • 浏览: 470673 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java基础之Java8中Map的compute的使用

    博客分类:
  • Java
阅读更多

假如我们现在有一需求,需要统计一个字符串中各个字母出现的频率,然后从中找出频率最高的字母。让我们先来看看jdk8之前的写法。

 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);
                }
            }

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics