介紹
Java中的getOrDefault方法是在Java 8中新增的方法,它屬於Map接口的一部分。它的作用是當Map中不存在指定key時,返回指定的默認值,否則返回該key所對應的value。這個方法非常實用,能夠讓我們在處理Map的時候更加方便快捷。
詳細闡述
下面我們從多個方面對Java中的getOrDefault方法進行詳細闡述。
1. getOrDefault方法的定義
先來看一下getOrDefault方法的定義:
T getOrDefault(Object key, T defaultValue)
其中,key表示要獲取value的key值,defaultValue表示在key不存在時返回的默認值。
2. 使用getOrDefault方法查找Map中的value
下面我們來看一個例子,在Map中查找key為”key1″的value:
Map<String, Integer> map = new HashMap<>();
map.put("key1", 12);
map.put("key2", 13);
Integer value = map.getOrDefault("key1", 0);
System.out.println(value); //打印出:12
我們可以看到,在上面的例子中,我們使用getOrDefault方法查找key為”key1″的value,由於”key1″存在於Map中,因此返回的是12。如果我們查找一個不存在的key,比如”key3″,則會返回默認值0:
Integer value = map.getOrDefault("key3", 0);
System.out.println(value); //打印出:0
3. getOrDefault方法的優點
使用getOrDefault方法有以下幾個優點:
① 在Map中查找key對應的value時,不需要先判斷key是否存在,節省了代碼量。
② getOrDefault方法返回的是一個泛型T,可以適用於不同類型的Map,比如Map<String, Integer>,Map<String, String>等。
③ 代碼更加簡潔,可讀性更高。在處理Map時,使用getOrDefault方法可以讓代碼更加簡潔,可讀性更高,從而提高開發效率。
4. getOrDefault方法的局限性
getOrDefault方法的局限性在於不支持對Map中的value進行修改。如果需要修改Map中的value,可以使用put方法。
5. getOrDefault方法與computeIfAbsent方法的區別
getOrDefault方法與computeIfAbsent方法都可以用於獲取Map中的value,但它們有一些不同點。
getOrDefault方法適用於獲取Map中已有的key的value,如果key不存在則返回默認值。而computeIfAbsent方法則適用於獲取Map中不存在的key的value,如果key不存在,則會執行一個BiFunction函數來生成一個默認值,然後將該默認值與key一起放入Map中。
下面是一個使用computeIfAbsent方法的例子:
Map<String, Integer> map = new HashMap<>();
map.put("key1", 12);
Integer value = map.computeIfAbsent("key2", k -> 0);
System.out.println(value); //打印出:0
在上面的例子中,我們使用computeIfAbsent方法查找一個不存在於Map中的key,由於該key不存在,因此會執行後面Lamdba表達式中的函數k -> 0,生成一個默認值0,然後將該默認值與key一起放入Map中,並返回該默認值0。
結論
getOrDefault方法是Java 8中新增的實用方法,使用它可以方便地獲取Map中的value,而不用擔心key不存在的情況。同時,getOrDefault方法代碼簡潔,可讀性高,適用於不同類型的Map。但是,由於getOrDefault方法不支持對Map中的value進行修改,因此在有修改Map中value需求的情況下,我們需使用put方法。同時,getOrDefault方法與computeIfAbsent方法有區別,分別適用於Map中已有key和不存在key的情況。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/181924.html