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中。