Java:jdk8中map新增的merge方法
是否使用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.7 Java 8中Map新增的方法
Java 8 除了为 Map 增加了 remove(Object key, Object value) 默认方法之外,还增加了如下方法. 名称 说明 Object compute(Object key ...
- Java 8 中 Map 骚操作之 merge() 的用法
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | juejin.im/post/5d9b455a ...
- js中ES6新增的数组方法reduce(),和数组去重,降维。
js中ES6新增的数组方法reduce() js数组reduce()详解 基本概念: reduce()方法接收一个函数作为累加器,数组中的每一值(从左到右)开始缩减,最后成为一个值 reduce()为 ...
- java finally方法_讲解Java编程中finally语句的使用方法
讲解Java编程中finally语句的使用方法 在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会 ...
- jdk8中Map集合中的compute系列方法的使用
1.compute 现对List 中的map集合中的某个key进行批量的数据处理: package com.company.concurrent.jdk8;import java.util.Array ...
- java中使用es的dsl_基于DSL的基于图论的Java程序中输入图数据的方法
java中使用es的dsl 我们大多数人已经编写了一些处理图论算法的程序,例如找到两个顶点之间的最短路径,找到给定图的最小生成树等等. 在这些算法的每一种中,表示图形的编程方式是使用邻接矩阵或邻接列表 ...
- java putifabsent_java8中Map的一些骚操作总结
一 前言 本篇内容是关于 map 新特性的一些方法使用上的介绍,如果有不足之处欢迎补充!! 二 map新特性 关于以下函数式编程的函数的计算知识追寻者都使用 简单字符串代替了,参数无非就是Key,va ...
- Java虚拟机中获得Runtime实例的方法是什么?
Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程.每次使用"java"命令启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例,应用 ...
- abstract类中不可以有private的成员_我要告诉你:java接口中可以定义private私有方法...
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- java常见的ide_在三个Java IDE中生成的三种常见方法
java常见的ide 在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ e ...
最新文章
- [项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer...
- I00002 打印九九乘法表
- 小程序input框letter-spacing失效,处理方法
- Java学习笔记(四)--数据类型与运算符
- Linux 手动或自动挂载 NTFS 硬盘
- Java中线程池,你真的会用吗
- 【Oracle】管理还原数据(undo)
- 【java笔记】常用函数式接口(1):Supplier接口
- 对象三大特性:封装、继承、多态。通俗易懂!!看完还不懂来打我!!!超详细!!涉及各种重要基础
- C++ 调用 SWMM模型.swmm5.dll
- VS2012 Npcap使用
- 电脑桌面有HTML一直删除不了,IE浏览器首页地址被改或桌面顽固IE快捷方式无法删除...
- 怎么压缩图片的大小?收好这几个压缩方法
- java openxml word_OpenXMl倒出word、PDF
- iPad,下载迅雷电影,迅雷HD出现“应版权方要求,文件无法下载”解决方法!
- 基于matlab进行图像处理学习——从入门到入魔
- pv ip uv区别
- 二进制高可用安装k8s集群部署
- 深度学习:词向量和句向量(Embedding)
- [CF538H]Summer Dichotomy
热门文章
- 10.GitLab 服务器和外部服务集成
- 7.Swoole的自定义协议功能的使用
- 25. 单体内置对象
- 3. 盒子模型与兼容性
- php中几个操作函数参数的函数func_num_args() func_get_args() func_get_arg($i)php
- 2、linux网络编程--无连接与面向连接的区别
- js 获取 最近七天 30天 昨天的方法 -- 转
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)...
- 使用TypeScript开发ReactNative应用的简单示例
- Java加密压缩文件