1.Map.merge辦法介紹
jdk8對(duì)于許多常用的類都擴(kuò)展了一些面向函數(shù),lambda表達(dá)式,辦法引用的功能,使得java面向函數(shù)編程更為方便。其中Map.merge辦法就是其中一個(gè),merge辦法有三個(gè)參數(shù),key:map中的鍵,value:使用者傳入的值,remappingFunction:BiFunction函數(shù)接口(該接口接納兩個(gè)值,執(zhí)行自定義功能并回來終究值)。當(dāng)map中不存在指定的key時(shí),便將傳入的value設(shè)置為key的值,當(dāng)key存在值時(shí),執(zhí)行一個(gè)辦法該辦法接納key的舊值和傳入的value,執(zhí)行自定義的辦法回來終究成果設(shè)置為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辦法在計(jì)算時(shí)用的場景比較多,這里舉一個(gè)小栗子:按年紀(jì)計(jì)算出各年紀(jì)的人名。
publicstaticvoidmain(String[]args){//存測試數(shù)據(jù),模仿從數(shù)據(jù)庫讀出的數(shù)據(jù)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的數(shù)據(jù)Mapmap=newHashMap<>();
list.forEach(uVo->{//newHashSet(){{}}這是什么寫法,我也不知道。感覺很帥map.merge(uVo.getAge(),newHashSet(){
{
add(uVo.getName());
}
},(oldV,newV)->{
oldV.addAll(newV);returnoldV;
});
});
System.out.println(map);
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)