jdk8中map的merge方法介绍

IT技术2年前 (2022)发布 投稿用户
0

1.Map.merge办法介绍

jdk8对于许多常用的类都扩展了一些面向函数,lambda表达式,办法引用的功能,使得java面向函数编程更为方便。其中Map.merge办法就是其中一个,merge办法有三个参数,key:map中的键,value:使用者传入的值,remappingFunction:BiFunction函数接口(该接口接纳两个值,执行自定义功能并回来终究值)。当map中不存在指定的key时,便将传入的value设置为key的值,当key存在值时,执行一个办法该办法接纳key的旧值和传入的value,执行自定义的办法回来终究成果设置为key的值。
附上源码
defaultVmerge(Kkey,Vvalue,
BiFunctionsuperV,?superV,?extendsV>remappingFunction){
Objects.requireNonNull(remappingFunction);
Objects.requireNonNull(value);
VoldValue=get(key);
VnewValue=(oldValue==null)?value:
remappingFunction.apply(oldValue,value);if(newValue==null){
remove(key);
}else{
put(key,newValue);
}returnnewValue;
}
2.map.merge()办法使用场景
merge办法在计算时用的场景比较多,这里举一个小栗子:按年纪计算出各年纪的人名。
publicstaticvoidmain(String[]args){//存测试数据,模仿从数据库读出的数据Listlist=newArrayList<>();
useru1=newuser(“李四”,20);
useru2=newuser(“张三”,30);
useru3=newuser(“隔壁老王”,18);
useru4=newuser(“劈腿老罗”,18);
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);//终究merge的数据Mapmap=newHashMap<>();
list.forEach(uVo->{//newHashSet(){{}}这是什么写法,我也不知道。感觉很帅map.merge(uVo.getAge(),newHashSet(){
{
add(uVo.getName());
}
},(oldV,newV)->{
oldV.addAll(newV);returnoldV;
});
});
System.out.println(map);
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章