志在指尖
用双手敲打未来

jdk8中map的merge方法介绍

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);
}

未经允许不得转载:IT技术网站 » jdk8中map的merge方法介绍
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载