新增方法java_Java8_map新增方法
参考博客
default方法
map.put(1, "a");
map.put(2, "b");
getOrDefault方法
如果指定的key存在,返回value,不存在,返回指定的值
System.out.pringln(map.getOrDefaullt(4, "d"))
forEach方法
遍历Map中的所有Entry, 对key, value进行处理
// 输出1a, 2b, 3c
map.forEach((key, value) -> System.out.println(key + value));
replaceAll方法
替换Map中所有Entry的value值,这个值由旧的key和value计算得出,接收参数 (K, V) -> V, 类似如下代码
map.replaceAll((key, value) -> (key + 1) + value);
// 输出 12a 23b 34c
map.forEach((key, value) -> System.out.println(key + value));
putIfAbsent 方法
如果key关联的value不存在,则关联新的value值,返回key关联的旧的值
相当于
V v = map.get(key);
if (v == null)
v = map.put(key, value);
return v;
remove 方法
接收2个参数,key和value,如果key关联的value值与指定的value值相等(equals),则删除这个元素
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.remove(key);
return true;
} else
return false;
replace(K key, V oldValue, V newValue) 方法
如果key关联的值与指定的oldValue的值相等,则替换成新的newValue
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.put(key, newValue);
return true;
} else
return false;
replace(K key, V value) 方法
if (map.containsKey(key)) {
return map.put(key, value);
} else
return null;
computeIfAbsent 方法
如果指定的key不存在,则通过指定的K -> V计算出新的值设置为key的值
if (map.get(key) == null) {
V newValue = mappingFunction.apply(key);
if (newValue != null)
map.put(key, newValue);
}
栗子:
map.computeIfAbsent(1, key -> key + " computed");
// 存在key为1,则不进行计算,输出值 a
System.out.println(map.get(1));
map.computeIfAbsent(4, key -> key + " computed");
// 不存在key为4,则进行计算,输出值 4 computed
System.out.println(map.get(4));
computeIfPresent 方法
如果指定的key存在,则根据旧的key和value计算新的值newValue,
如果newValue不为null,则设置key新的值为newValue,
如果newValue为null,则删除该key的值
if (map.get(key) != null) {
V oldValue = map.get(key);
V newValue = remappingFunction.apply(key, oldValue);
if (newValue != null)
map.put(key, newValue);
else
map.remove(key);
}
eg:
map.computeIfPresent(1, (key, value) -> (key + 1) + value);
// 存在key为1, 则根据旧的key和value计算新的值,输出 2a
System.out.println(map.get(1));
map.computeIfPresent(2, (key, value) -> null);
// 存在key为2, 根据旧的key和value计算得到null,删除该值,输出 null
System.out.println(map.get(2));
merge(K key, V value, BiFunction super V, ? super V, ? extends V> remappingFunction) 方法
如果指定的key不存在,则设置指定的value值,
否则根据key的旧的值oldvalue,value计算出新的值newValue,
如果newValue为null,
则删除该key,否则设置key的新值newValue。类似如下代码
V oldValue = map.get(key);
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if (newValue == null)
map.remove(key);
else
map.put(key, newValue);
eg:
// 存在key为1, 输出 a merge
System.out.println(map.merge(1, " merge", (oldValue, newValue) -> oldValue + newValue));
// 新值为null,删除key,输出 null
System.out.println(map.merge(1, " merge", (oldValue, newValue) -> null));
// 输出 " merge"
System.out.println(map.merge(4, " merge", (oldValue, newValue) -> oldValue + newValue));
新增方法java_Java8_map新增方法相关推荐
- flash绘图API :flash player11新增的绘图API方法--cubicCurveTo
今天除了更新的3D的api之前,另外在flash Graphics方法当中新增了一个cubicCurveTo的方法,能够使用其进行绘制贝塞尔曲线,奇怪是文档里面对应的flash 版本是12,不知道是不 ...
- js笔记(三)ES5、ES5新增的数组的方法、字符串的方法、字符编码、对象的序列化和反序列化、bind
数组方法.字符串方法总结 大目录 小目录 一.ES5严格模式 1. 严格模式: 2. 严格模式的行为变更: 二.ES5新增的数组的方法 1. 判断是否为数组:Array.isArray(): 2. 判 ...
- linux添加了一条静态路由,为Linux新增静态路由的方法
为Linux新增静态路由的方法 静态路由是用户手工配置的路由信息,起到保护网络安全的作用,那么要如何为Linux系统新增一条静态路由呢?下面YJBYS小编就给大家介绍下Linux新增静态路由器的方法. ...
- ubuntu新增固态硬盘的方法
这两天买了新的固态,居然用不了,在乌班图上面读写操作不了,通过下面两个作者的方法即可安装. 注意: 1.首先需要对固态在win系统下,进行分区即一个区,填写data盘.然后才能在乌班图系统识别出. 2 ...
- 数据类型_array_es6新增的数组遍历方法
数组遍历 [1]map方法 [2]filter方法 [3]forEach方法 [4]some方法 [5]every方法 [6]findIndex方法 [7]includes方法 [8]reduce方法 ...
- Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法
1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...
- 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)
文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...
- python基础之类的属性方法、魔术方法普通方法
类的定义.调用方法.引用属性 类的属性和方法 类的属性 类属性的访问 类属性可以直接访问,无需实例化 类属性也可以通过实例来访问 实际上,所有的实例是共享类属性的 类属性的修改 修改了类属性后,对应的 ...
- js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf
全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数教程全解 js中函数也是一种对象,因此有自己的原型对象,可以作为其他对象的属性,也可以作为其他函数的参数. 函数方法 [apply() ...
最新文章
- JavaScript的toString()和valueOf()函数
- ActiveReport的小数显示方法
- Kafka如果丢了消息,怎么处理的?
- 企业云上安全事件突发,这五个问题值得运维大佬们日常自查!
- idea spring helloworld
- RHEL5.3下MRTG+SNMP的搭建
- linux 安装mysql8_MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?
- python用于数据处理真的那么强大嘛_为什么有那么多人选择Python,真的有那么好吗?...
- 手持“六脉神剑”、横跨软硬领域,揭晓英特尔构筑智慧云基石宝典!
- python运维开发实战项目-1
- 信息流广告投放分析实战案例!
- php导出excel列宽,PHP导出Excel 之 Spreadsheet_Excel_Writer
- 计算机如何连接iphone,iPhone6如何连接到电脑?iPhone6连接到电脑图解教程
- imovie导入媒体没有声音的解决办法
- SANER 2018 论文阅读- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- maven本地仓库的更新
- Access根据出生日期计算年龄_不好意思,Power Query里根据出生日期计算年龄有点儿繁琐!...
- linux中怎么修改用户组名,Linux 下如何修改用户名(同时修改用户组名和家目录)...
- Postgresql源码(5)缓冲区管理
- 小米路由搭建KMS Server
热门文章
- DependentLayout相对布局
- 时间怎么算用计算机,抖音珍惜时间计算器怎么用
- Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
- Python os.path() 模块 详解 附算例
- wxWidgets:HtmlLbox wxWidgets 示例
- boost::statechart模块实现类型信息测试
- boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
- boost::hash_range相关的测试程序
- boost::advance用法的测试程序
- boost::hana::scan_right用法的测试程序