1. 程式人生 > >java8 Map中的 預設 value

java8 Map中的 預設 value

Map.getOrDefault(Object, V)

類似 Python 中的 collections.defaultdict

Map的新方法getOrDefault(Object,V)允許呼叫者在程式碼語句中規定獲得在map中符合提供的鍵的值,否則在沒有找到提供的鍵的匹配項的時候返回一個“預設值”。

下一段程式碼列舉對比了如何在JDK8之前檢查一個map中匹配提供鍵的值是否找到,沒找到匹配項就使用一個預設值是如何實現的,並且現在在JDK8中是如何實現的。

/*
 * 示範Map.getOrDefault方法並和JDK8之前的實現方法做對比。JDK8
 * 中新增的Map.getOrDefault方法相比於傳統的實現方法,所用的程式碼行數更少
 * 並且允許用一個final型別的變數來接收返回值。 
 */
// JDK8之前的實現方法 String capitalGeorgia = statesAndCapitals.get("Georgia"); if (capitalGeorgia == null) { capitalGeorgia = "Unknown"; } // JDK8的實現方法 final String capitalWisconsin = statesAndCapitals.getOrDefault("Wisconsin", "Unknown");

在Apache Commons包的DefaultedMap類提供了和新的Map.getOrDefault(Object, V)方法類似的功能。Groovy GDK中為Groovy包含了一個類似的方法,Map.get(Object,Object),但是這個方法的行為有一點不同,因為它不僅僅在“鍵”沒找到的時候返回提供的預設值,而且還會將鍵和預設值增加到呼叫的map中。