java8中compute和merge方法如何使用
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,java8中compute和merge方法如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。基础数据:KeyAndV
千家信息网最后更新 2025年02月04日java8中compute和merge方法如何使用
java8中compute和merge方法如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
基础数据:
KeyAndValue a1 = new KeyAndValue().setName("kevin").setValue("lee");KeyAndValue a5 = new KeyAndValue().setName("kevin2").setValue("lee5");KeyAndValue a6 = new KeyAndValue().setName("kevin3").setValue("lee8");
场景一对应的方法是compute方法
compute,对key存在的元素进行加工,并返回加工后的元素,同时map中该元素也被替换成加工后的。如果对value进行计算或逻辑处理,必须保证value非null。示例如下:
Mapmaps = new HashMap<>();maps.put("a",a1);System.out.println(maps);{a=KeyAndValue(name=kevin, value=lee)}//key存在时KeyAndValue compute1 = maps.compute("a", (k, v) -> { Optional.ofNullable(v).ifPresent(v1 -> v1.setValue(v.getValue().concat("__ddddd")));return v;});System.out.println(compute1);// KeyAndValue(name=kevin, value=lee__ddddd)System.out.println(maps);// {a=KeyAndValue(name=kevin, value=lee__ddddd)}// key不存在时KeyAndValue compute = maps.compute("b", (k, v) -> { Optional.ofNullable(v).ifPresent(v1 -> v1.setValue(v.getValue().concat("__ddddd")));return v;});System.out.println(compute);//nullSystem.out.println(maps);// {a=KeyAndValue(name=kevin, value=lee__ddddd)}
当然针对value不存在和存在,也有针对性的方法(computeIfAbsent和computeIfPresent)。
computeIfAbsent
key不存在或null,则处理,返回处理后结果,并更新value;
//key不存在或nullMapmap = new HashMap<>();System.out.println(map);//{}KeyAndValue computeIfAbsent = map.computeIfAbsent("a", s -> {return a6;});System.out.println(computeIfAbsent);// KeyAndValue(name=kevin3, value=lee8)System.out.println(map);// {a=KeyAndValue(name=kevin3, value=lee8)}
key存在,则不进行处理,返回value,不更新map。示例如下:
// key存在。不进行任何处理,返回valueMapmap = new HashMap<>();map.put("a",a1);System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee)}KeyAndValue computeIfAbsent1 = map.computeIfAbsent("a", s -> {return a6;});System.out.println(computeIfAbsent1);// KeyAndValue(name=kevin, value=lee)System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee)}
computeIfPresent ,
key存在则处理,返回处理后结果,并更新value;
//key存在则处理Mapmap = new HashMap<>();map.put("a",a1);System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee)}KeyAndValue computeIfPresent = map.computeIfPresent("a", (k, v) -> {return v.setValue(v.getValue().concat("_00000"));});System.out.println(computeIfPresent);// KeyAndValue(name=kevin, value=lee_00000)System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee_00000)}
key不存在或null,则不进行处理,返回null,不更新value
//key不存在则处理Mapmap = new HashMap<>();// map.put("a",null);System.out.println(map);//{}KeyAndValue computeIfPresent = map.computeIfPresent("a", (k, v) -> {return v.setValue(v.getValue().concat("_00000"));});System.out.println(computeIfPresent);// nullSystem.out.println(map);// {}
场景二对应的方法merge
merge:对key存在的元素进行合并,并返回加工后的元素
a6就是合进来的新值,a6和newV是同一对象,所以newV和a6可互换;
oldV是map中原有key对应的值,oldV有值则合并,无值则新增对应的k和value=newV的键值对
Mapmap = new HashMap<>();map.put("a",a1);System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee)}
//"a"有值,则合并KeyAndValue merge = map.merge("a", a6, (oldV, newV) -> { oldV.setValue(newV.getValue()+"___"+oldV.getValue());return oldV;});System.out.println(merge);// KeyAndValue(name=kevin, value=lee8___lee)System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee8___lee)}//"b"无值,则新增"b":newVKeyAndValue merge1 = map.merge("b", a5, (oldV, newV) -> { oldV.setValue(oldV.getValue()+"___"+oldV.getValue());return oldV; //a5就是合进来的新值,a5和newV是同一对象,所以newV和a5可互换; // oldV是map中原有key="b"对应的值,oldV有值则合并,无值则新增});System.out.println(merge1);// KeyAndValue(name=kevin2, value=lee5)System.out.println(map);// {a=KeyAndValue(name=kevin, value=lee), b=KeyAndValue(name=kevin2, value=lee5)}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
处理
方法
元素
加工
更新
场景
对象
就是
示例
结果
中原
合进
帮助
清楚
内容
同时
基础
对此
数据
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江省网络安全管理处
网络安全绘画教程app
漯河市网络安全运营中心
数据库 多对多怎么
玄武区第三方软件开发创新服务
数据库文档加密
盈环网络技术上海
大气互联网连线科技城市
德化县建站服务器
2018软件开发免税政策
软件工程软件开发报告
据网络安全法规定
门禁卡的数据库
网络安全2017年增补题库
2022网络安全成就
网络安全gre百度百科
建议直接考网络技术吗
实验室服务器价格
数据库ip地址配置错误
电脑pubg怎么换服务器
互联网科技栏目大全
软件开发的岗位描述
游戏服务器管理架构
查询数据库的sql语句
戴尔r710服务器远程管理
fifa22潜力数据库
方舟生存进化保存的服务器在哪里
甘孜网络技术联系方式
广州企家互联网科技有限公司
嵌入式软件开发客户表情包