Java8新特性——Map的新方法
阿新 • • 發佈:2019-01-02
今天是高考的日子,是大四師兄師姐答辯畢業的日子。一代又來,一代又去。好久沒寫部落格,藉此特殊日子整理一下前不久學java8新特性時寫的程式碼,留下痕跡。(本部落格的程式碼根據 學習整理,加上個人的理解而成,關於某個新特性的介紹程式碼裡的註釋已經闡述清楚,故不再寫文字介紹,直接看程式碼吧!)
本篇介紹java8的新特性之一:Map的新方法。
import java.util.HashMap; import java.util.Map; import org.junit.Test; /** * Map */ public class NewMap { @Test public void testMap(){ Map<Integer, String> 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)); } }
詳情請見這篇部落格: