java8中compute和merge方法如何使用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,java8中compute和merge方法如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。基础数据:KeyAndV
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
互联网黑科技
上海喔噻互联网科技有限公司
互联网电商科技
科技企业和互联网企业
互联网与科技发展
金融科技与互联网金融
丰台科技园 互联网
汇久创客互联网科技
互联网科技股午盘股票涨跌
互联网科技生活的内容
现代科技和互联网有关系吗
欧洲十大科技互联网公司
花神(南京)互联网科技有限公司
明优互联网科技有限公司
深圳无忧互联网科技
互联网科技股为什么大涨
九思连强互联网电子科技有限公司
珠海东科互联网科技有限公司
平安好医生打造互联网科技医疗
六子台科技互联网展会
上海挚品互联网科技有限公司
互联网巨头科技公司
北京互联网科技有限公司
云电互联网科技
壕鑫互联网络科技
四个字互联网科技公司取名
顶级互联网科技成果有哪些
福建科技产业互联网发展
华人运通互联网科技公司
互联网科技创业计划的风险分析