java8 Map中的 預設 value
阿新 • • 發佈:2018-12-14
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中。