`
zy116494718
  • 浏览: 476788 次
  • 性别: 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);
                }
            }

 

 

分享到:
评论

相关推荐

    浅析Java8 中 Map 接口的新方法

    此外,Java8 中 Map 接口还引入了其他一些新的方法,例如 computeIfAbsent()、computeIfPresent()、compute()、merge() 等,这些方法可以帮助我们更方便地处理 Map 中的数据。 Java8 中 Map 接口的新方法可以帮助...

    Java8 Map中新增的方法使用总结

    Java 8 Map 中新增的方法使用总结 Java 8 对 Map 增加了许多实用的默认方法,如 getOrDefault, forEach, replace, replaceAll, putIfAbsent, remove(key, value), computeIfPresent, computeIfAbsent, compute 和 ...

    Java Platform SE 8.chm.zip

    `ConcurrentHashMap`、`CopyOnWriteArrayList`和`CopyOnWriteArraySet`等并发集合类在Java 8中得到了改进,提供了更高效的并发操作,如新的`compute()`、`computeIfAbsent()`和`merge()`方法。 **10. 类型接口...

    CalculateFrequency.java_Java8_playfairjava_playfaircipher_

    5. **Lambda表达式**:Java 8引入的Lambda表达式简化了函数式编程,可能用于`Map`的迭代和更新,例如`map.forEach((k, v) -&gt; v++)`这样的表达式。 6. **输出结果**:最后,程序会将频率统计结果写入文件,这可能...

    java8_api.7z

    10. **Map接口增强**:Java 8对`Map`接口进行了增强,添加了`forEach`, `getOrDefault`, `putIfAbsent`, `compute`, `merge`等方法,使得操作Map更加方便。 11. **构造器引用**:类似于方法引用,构造器引用允许...

    JDK8 API 文档

    `ConcurrentHashMap`在JDK8中进行了优化,提供了新的`compute()`, `computeIfAbsent()`, `computeIfPresent()`等方法,可以在保证线程安全的同时进行高效的数据更新。 以上只是JDK8 API中的一部分亮点,实际使用中...

    Java类库的更新.pdf

    - `compute`, `computeIfAbsent`, `computeIfPresent`, `merge`: 这些方法用于根据给定条件更新或计算Map中的值。 - `putIfAbsent`, `remove(key, value)`, `replace`: 这些操作提供了原子性的添加、删除和替换...

    JDK 1.8中文API文档

    例如,可以使用`filter()`过滤元素,`map()`进行转换,`reduce()`执行累积计算。 3. **方法引用和构造器引用** 方法引用和构造器引用是与Lambda表达式相关的特性,它们允许直接引用已有方法或构造器,而不是通过...

    jdk8中文API文档

    下面,我们将深入探讨JDK 8中的关键知识点。 1. **Lambda表达式**: Lambda表达式是JDK 8最具代表性的新特性,它简化了函数式编程,允许开发者用更简洁的方式处理匿名函数。例如,你可以使用lambda表达式来定义...

    Lambda表达式和Java集合框架

    Lambda表达式和Java集合框架是Java8中两个重要的概念,本文主要介绍了这两个概念的相关知识,并对Java集合框架中新增的方法进行了详细的讲解。下面是相关知识点的总结: 一、Lambda表达式 Lambda表达式是Java8中...

    Java之Stream

    ### Java之Stream——Java 8的新特性详解 #### Stream简单介绍 Stream 是 Java 8 中引入的一个重要新特性,它代表了一种数据流处理的新方式。不同于传统的集合框架(如 List 和 Set)主要关注数据存储的方式,...

    java8源码-Java8InAction:Java8实战学习笔记以及

    3. **默认方法**:接口在Java 8中新增了默认方法,允许在接口中定义带实现的方法,这样不破坏向后兼容性,同时扩展了接口的功能。例如,`Collection`接口中的`forEach()`方法就是默认方法。 4. **日期和时间API**:...

    Java8Training:Java 8培训

    - **Lambda表达式**:Java 8最大的变革之一,允许开发者以更简洁的方式编写匿名函数,使得代码更加简洁且易于理解。 - **函数接口**:如`Runnable`, `Callable`等,Java 8新增了`Supplier`, `Consumer`, `Function...

    java-SE-8-Really-Impatient:我为真正不耐烦的 Java SE 8 一书的练习解答

    9. **Map 的新操作**:Java 8 对`Map`接口进行了扩展,增加了如`compute`, `merge`, `putIfAbsent`等方法,方便了键值对的计算和更新。练习可能会涵盖这些方法的使用场景。 10. **Method References**:除了lambda...

    08 - ASM使用ClassWrite生成接口 - 简书1

    2. `ClassWriter.COMPUTE_FRAMES`: 这是一个常量,表示让ASM自动计算并插入堆栈映射帧(Stack Map Frames)。这对于JVM的动态类型检查是必要的,特别是当使用Java 7及以上版本时。 3. `visit()`, `visitEnd()`, `...

    如何巧用HashMap一行代码统计单词出现次数详解

    巧用HashMap统计单词出现次数 ...使用Java 8中的compute和merge方法,可以简洁地统计单词出现的次数。compute方法和merge方法都可以实现单词统计,但compute方法更加灵活,可以在单词出现次数的基础上进行其他操作。

    java8集合源码分析-blog:博客

    HashSet的元素不保证顺序,但在Java 8中,通过使用`LinkedHashSet`可以保持元素的插入顺序。此外,TreeSet也有了改进,它可以按照自然排序或者自定义比较器进行排序。 映射接口Map也得到了扩展,新添加了`Map.Entry...

    jdk1.8 中文API

    JDK的API文档是Java程序员的重要参考资料,它详细列出了Java平台标准版(Java SE)1.8中所有可用的类、接口、方法和构造函数,以及它们的使用说明和示例。 **标签:“jdk”,“java”,“api”** 这些标签揭示了...

    Mastering Lambdas- Java Programming in a Multicore World

    Lambda expressions were introduced in Java 8 as a significant feature to enhance functional programming capabilities within the Java ecosystem. These expressions allow developers to treat functions as...

    北京利康时代笔试题面试题

    在Java中,可以使用`java.util.regex`包中的类来匹配和操作字符串。在这个例子中,程序读取文件,然后使用正则表达式分割单词,通过`Map`来存储每个单词出现的次数。`Map.containsKey()`方法检查`Map`中是否存在指定...

Global site tag (gtag.js) - Google Analytics