一、getOrDefault方法是什麼
getOrDefault方法是Map介面中的一個默認方法,該方法的作用是取出Map中指定key對應的value值,如果該key不存在,則返回設置的默認值。
在使用Map時,由於在不斷地設置、刪除、查詢數據的過程中,可能會遇到某個key在Map中不存在的情況,這時候如果不加特殊處理就會拋出NoSuchElementException異常,因此使用getOrDefault方法可以避免這種異常的出現,代碼更加健壯。
二、getOrDefault方法的語法
default V getOrDefault(Object key, V defaultValue)
其中,key是Map中的鍵,defaultValue是key對應的默認值。
三、getOrDefault方法的用法
1. 基本用法
Map numMap = new HashMap(); numMap.put("one", 1); numMap.put("two", 2); numMap.put("three", 3); int num = numMap.getOrDefault("four", 0); // 返回值為0 System.out.println(num); // 輸出0
當numMap中不存在”four”這個key時,getOrDefault方法返回0。
2. 使用Lambda表達式實現默認值的計算
Map<String, List> nameMap = new HashMap(); nameMap.put("A", Arrays.asList("Adam")); nameMap.put("B", Arrays.asList("Bob", "Bill")); List nameList = nameMap.getOrDefault("C", new ArrayList()); nameMap.computeIfAbsent("C", k -> new ArrayList()).add("Carl"); nameList = nameMap.get("C"); System.out.println(nameList); // 輸出[Carl]
當nameMap中不存在”C”這個key時,使用Lambda表達式創建一個空ArrayList作為默認值,然後調用computeIfAbsent方法向Map中put一個key-value對,最後返回新的nameList。
3. 混合使用get、getOrDefault、put方法
Map foodMap = new HashMap(); foodMap.put("apple", "fruit"); String fruit = foodMap.getOrDefault("apple", ""); foodMap.put("banana", foodMap.get("banana")); foodMap.put("pear", foodMap.getOrDefault("pear", "fruit")); System.out.println(foodMap); // 輸出{apple=fruit, banana=null, pear=fruit}
在put數據時混合使用get、getOrDefault、put方法,可以非常靈活地向Map中添加數據。
四、getOrDefault方法的注意事項
在使用getOrDefault方法時需要注意以下幾點:
1. 如果在Map中已經有了一個鍵值對,getOrDefault方法則會獲取對應的值,而不是設置默認值;
2. 設置的默認值必須要與Map中的value的類型一致;
3. 在使用Lambda表達式實現默認值計算時,需要避免計算過程中拋出異常。
五、結束語
getOrDefault方法是Java 8中Map介面新增的方法,在處理Map數據時有非常廣泛的應用場景,使用該方法可以更加穩定地處理Map中不存在的key,避免程序拋出異常,提高代碼的健壯性。
原創文章,作者:FDJC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/136871.html