java8中compute和merge方法如何使用
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,java8中compute和merge方法如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。基础数据:KeyAndV
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
江苏小趣网络技术有限公司
崇明天气预报软件开发
atm网络技术收费
鲲鹏独立软件开发商
万方数据库检索集成
简述常用的软件开发
猎头推荐的简历与hr数据库重复
数据库开发工程师面试常见问题
李永良 软件开发
国外检索数据库
苹果文件管理怎么连接服务器
四川小程序软件开发外包
信息网络安全报警网站
观看网络安全读后感
河南六道网络技术有限公司
立博数据库
表格vba代码删除数据库
游爱网络技术有限公司电话
山东二级分销软件开发
英雄联盟全球服务器客户端
访问网络服务器
赤峰网络安全检测
数据库的主机和ftp主机
新路服务器
天津软件开发驻场服务
吉隆坡网络安全
红米手机如何设置服务器参数
软件开发提高解决问题能力
h5棋牌服务器一直重连怎么办
如何用电脑做网络服务器