引言
在Java 8中,Map介面中引入了一個新的方法getOrDefault(key, defaultValue),用於獲取指定key對應的value,若該key不存在,則返回defaultValue。此方法使用方便,代碼簡潔,常被用於避免NullPointerException異常。
正文
1、getOrDefault方法的語法
getOrDefault方法的語法為:
default V getOrDefault(Object key, V defaultValue)
其中,key表示Map中的鍵,defaultValue表示當鍵key不存在時返回的默認值。
2、getOrDefault方法的示例
下面是getOrDefault方法的示例:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
int value1 = map.getOrDefault("A", 0); // 返回1
int value2 = map.getOrDefault("D", 0); // 返回0
System.out.println(value1); // 輸出1
System.out.println(value2); // 輸出0
}
}
在上述例子中,map.getOrDefault(“A”, 0)返回1,因為A是map中的key並且其對應的value為1。而map.getOrDefault(“D”, 0)返回0,因為D不是map中的key,所以返回defaultValue即0。
3、使用getOrDefault方法避免NullPointerException異常
在使用get方法獲取Map中某個key對應的value時,如果該key不存在,則會返回null,如果在後續的代碼中未對null進行判斷,就會拋出NullPointerException異常。這時可以使用getOrDefault方法避免該異常。
下面是一個例子:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
Integer value1 = map.get("A"); // 返回1
Integer value2 = map.get("B"); // 返回null
int value3 = map.getOrDefault("B", 0); // 返回0
System.out.println(value1 + 1); // 輸出2
if (value2 != null) {
System.out.println(value2 + 1);
}
System.out.println(value3 + 1); // 輸出1
}
}
在上面的例子中,map.get(“A”)返回1,map.get(“B”)返回null,map.getOrDefault(“B”, 0)返回0。當對value1進行運算時,沒有出現NullPointerException異常,但是對value2進行運算時拋出了NullPointerException異常,而對value3進行運算時,getOrDefault方法返回默認值0,避免了NullPointerException異常的出現。
4、getOrDefault方法與computeIfAbsent方法的對比
getOrDefault方法與computeIfAbsent方法是兩個常用於獲取Map中某個key對應的value的方法,它們之間的區別在於:getOrDefault方法返回的是一個普通的值,而computeIfAbsent方法會在指定key不存在時執行一個lambda表達式,並將該表達式的返回值作為key對應的value。
下面是一個例子:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
int value1 = map.getOrDefault("A", 0); // 返回1
map.computeIfAbsent("B", k -> 2); // map中加入鍵值對"B"=>2
int value2 = map.getOrDefault("B", 0); // 返回2
System.out.println(value1); // 輸出1
System.out.println(value2); // 輸出2
}
}
在上述例子中,map.computeIfAbsent(“B”, k -> 2)在B鍵不存在時執行一個lambda表達式,這個表達式返回值2,然後將鍵B與值2存入Map中,最後使用getOrDefault方法獲取B鍵對應的值並返回。
總結
通過本文的講解,我們了解了Java 8中Map介面中的一種新方法getOrDefault的語法、示例、避免NullPointerException異常的方法以及與computeIfAbsent方法的對比。getOrDefault方法簡單易用,可以避免在使用get方法獲取Map中某個key對應的value時出現NullPointerException異常,但它不支持在key不存在時插入新的值。需要在key不存在時插入新的值時,可以使用computeIfAbsent方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/288790.html