今天是高考的日子,是大四師兄師姐答辯畢業的日子。一代又來,一代又去。好久沒寫博客,借此特殊日子整理一下前不久學java8新特性時寫的代碼,留下痕跡。(本博客的代碼根據
本篇介紹java8的新特性之一:Map的新方法。
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
/**
* Map
*/
public class NewMap {
@Test
public void testMap(){
Map map = new HashMap<>();
for(int i=0; i<10; i++){
//putIfAbsent使得我們不用寫是否為null值的檢測語句;
map.putIfAbsent(i, "val_"+i);
}
//-------1------maps不支持流。然而現在maps包括了許多新的非常有用的方法用於執行通用任務:
//forEach使用consumer來對map中的每個元素進行操作,執行通用任務。
map.forEach( (key,value) -> System.err.println(key +" : "+value) );
//----------2-------------------使用功能性函數在map里執行代碼:
//將key為3對應的值(val_3)改為 "val_3"+3*10 = val_330
map.computeIfPresent(3, (num, val) -> val + num*10);
System.err.println(map.get(3)); //val_330
//將key為9對應的值(val_9)改為 null
map.computeIfPresent(9, (num, val) -> null);
map.containsKey(9); // false
//將key為23對應的值(null)改為 "val_23"
map.computeIfAbsent(23, num -> "val" + num);
map.containsKey(23); // true
map.put(3, null);
//如果key為3對應的值改為null, 將其值改為"bam"
map.computeIfAbsent(3, num -> "bam");
System.err.println(map.get(3));// bam
//---------3--------------刪除給定鍵所對應的元素。刪除操作還需要滿足給定的值需要和map中的值相等:
map.remove(3, "val3");
map.get(3); // val33
map.remove(3, "val33");
map.get(3); // null
//----------4--------其他一些幫助性方法:
map.getOrDefault(44, "404 not found");
//---------------5----------------合並map中的實體
//此時map.get(9)=null
map.merge(9, "val999", (value, newValue) -> value.concat(newValue));
map.get(9); // val999
System.err.println(map.get(9));
map.merge(9, "concat", (value, newValue) -> value.concat(newValue));
map.get(9); // val999concat
System.err.println(map.get(9));
}
}
詳情請見這篇博客: