java8中compute和merge方法如何使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,java8中compute和merge方法如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。基础数据:KeyAndV
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
大学生容易受骗的网络安全
检查数据库是否启动在哪
组织机构数据库设计
万科成本数据库表格
菏泽橙子互联网科技有限公司
软件开发有哪几种理论
网络安全背景学法律
网络安全的aaa是哪三个a
大话西游2选择合适的服务器
数据库使用比例
网络安全部设立在哪里
腾讯服务器保存
进销存软件数据库还原
武汉软件开发公司的英文
手机网络安全类型不正确怎么解决
深圳网络安全联盟
企业级服务器属于什么服务器
艾泰 虚拟服务器
航运保证网络安全
数据库王珊第二章答案
dhcp实体服务器
北仑软件开发教程
论坛的数据库结构简述
国家股市数据库
如何搭建云播服务器
河南数据网络技术分类服务标准
数据库迁移Oracle
向日葵连接服务器的条件是
服务器咋造
dnf服务器的削峰错误