Java基础之Java8中Map的compute的使用_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java基础之Java8中Map的compute的使用

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

 2020/10/10 22:06:06  zy116494718  程序员俱乐部  我要评论(0)
  • 摘要:假如我们现在有一需求,需要统计一个字符串中各个字母出现的频率,然后从中找出频率最高的字母。让我们先来看看jdk8之前的写法。publicstaticvoidmain(String[]args){Stringstr="hellojava,iamvaryhappy!nicetomeetyou";//jdk1.8之前的写法HashMap<Character,Integer>result1=newHashMap<>(32);for(inti=0;i<str.length(
  • 标签:使用 Map Java

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

?

?

发表评论
用户名: 匿名