是否使用merge方法的代码比较

不使用merge

Map<Byte, Integer> counts = new HashMap<>();
for (byte b : bytes) {Integer count = counts.get(b);if (count == null) {// Map仍然没有该字符数据counts.put(b, 1);} else {counts.put(b, count + 1);}
}

使用merge

Map<Byte, Integer> counts = new HashMap<>();
for (byte b : bytes) {// Map仍然没有该字符数据counts.merge(b, 1, Integer::sum);
}

merge源码

defaultV merge(K key, V value,BiFunction<? super V, ? super V, ? extends V> remappingFunction) {Objects.requireNonNull(remappingFunction);Objects.requireNonNull(value);V oldValue = get(key);//1.给的key值的value为空,赋值newValue.  如果给的key值的value不为空,使用传过来的函数处理 oldValue和 newValue V newValue = (oldValue == null) ? value :remappingFunction.apply(oldValue, value);//若果处理后的newValue为空,移除当前值if(newValue == null) {remove(key);} else {//若果处理后的newValue为空, put操作          put(key, newValue);}return newValue;
}

该方法接收三个参数,一个 key 值,一个 value,一个 remappingFunction ,如果给定的key不存在,它就变成了 put(key, value) 。但是,如果 key 已经存在一些值,我们 remappingFunction 可以选择合并的方式,然后将合并得到的 newValue 赋值给原先的 key。

Java:jdk8中map新增的merge方法相关推荐

  1. 1.7 Java 8中Map新增的方法

    Java 8 除了为 Map 增加了 remove(Object key, Object value) 默认方法之外,还增加了如下方法. 名称 说明 Object compute(Object key ...

  2. Java 8 中 Map 骚操作之 merge() 的用法

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | juejin.im/post/5d9b455a ...

  3. js中ES6新增的数组方法reduce(),和数组去重,降维。

    js中ES6新增的数组方法reduce() js数组reduce()详解 基本概念: reduce()方法接收一个函数作为累加器,数组中的每一值(从左到右)开始缩减,最后成为一个值 reduce()为 ...

  4. java finally方法_讲解Java编程中finally语句的使用方法

    讲解Java编程中finally语句的使用方法 在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会 ...

  5. jdk8中Map集合中的compute系列方法的使用

    1.compute 现对List 中的map集合中的某个key进行批量的数据处理: package com.company.concurrent.jdk8;import java.util.Array ...

  6. java中使用es的dsl_基于DSL的基于图论的Java程序中输入图数据的方法

    java中使用es的dsl 我们大多数人已经编写了一些处理图论算法的程序,例如找到两个顶点之间的最短路径,找到给定图的最小生成树等等. 在这些算法的每一种中,表示图形的编程方式是使用邻接矩阵或邻接列表 ...

  7. java putifabsent_java8中Map的一些骚操作总结

    一 前言 本篇内容是关于 map 新特性的一些方法使用上的介绍,如果有不足之处欢迎补充!! 二 map新特性 关于以下函数式编程的函数的计算知识追寻者都使用 简单字符串代替了,参数无非就是Key,va ...

  8. Java虚拟机中获得Runtime实例的方法是什么?

    Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程.每次使用"java"命令启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例,应用 ...

  9. abstract类中不可以有private的成员_我要告诉你:java接口中可以定义private私有方法...

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  10. java常见的ide_在三个Java IDE中生成的三种常见方法

    java常见的ide 在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ e ...

最新文章

  1. [项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer...
  2. I00002 打印九九乘法表
  3. 小程序input框letter-spacing失效,处理方法
  4. Java学习笔记(四)--数据类型与运算符
  5. Linux 手动或自动挂载 NTFS 硬盘
  6. Java中线程池,你真的会用吗
  7. 【Oracle】管理还原数据(undo)
  8. 【java笔记】常用函数式接口(1):Supplier接口
  9. 对象三大特性:封装、继承、多态。通俗易懂!!看完还不懂来打我!!!超详细!!涉及各种重要基础
  10. C++ 调用 SWMM模型.swmm5.dll
  11. VS2012 Npcap使用
  12. 电脑桌面有HTML一直删除不了,IE浏览器首页地址被改或桌面顽固IE快捷方式无法删除...
  13. 怎么压缩图片的大小?收好这几个压缩方法
  14. java openxml word_OpenXMl倒出word、PDF
  15. iPad,下载迅雷电影,迅雷HD出现“应版权方要求,文件无法下载”解决方法!
  16. 基于matlab进行图像处理学习——从入门到入魔
  17. pv ip uv区别
  18. 二进制高可用安装k8s集群部署
  19. 深度学习:词向量和句向量(Embedding)
  20. [CF538H]Summer Dichotomy

热门文章

  1. 10.GitLab 服务器和外部服务集成
  2. 7.Swoole的自定义协议功能的使用
  3. 25. 单体内置对象
  4. 3. 盒子模型与兼容性
  5. php中几个操作函数参数的函数func_num_args() func_get_args() func_get_arg($i)php
  6. 2、linux网络编程--无连接与面向连接的区别
  7. js 获取 最近七天 30天 昨天的方法 -- 转
  8. 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)...
  9. 使用TypeScript开发ReactNative应用的简单示例
  10. Java加密压缩文件