jdk8中map的merge方法介绍

时间:2023-05-16

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

文章标签:

Copyright © 2016 2024澳门原料网1688白老虎,保留所有权利。 粤ICP备09033321号

2024澳门原料网1688白老虎 2024澳门原料网1688白老虎
2024澳门原料网1688白老虎
扫描二维码
与项目经理交流
2024澳门原料网1688白老虎 2024澳门原料网1688白老虎
2024澳门原料网1688白老虎
扫描二维码
与项目经理交流
2024澳门原料网1688白老虎
ciya68