在没有空指针异常的情况下从Map of Map获取值



我有

Map<String, Map<String, Time>> map = new HashMap<String, Map<String, Time>>();
Time t = map.get("key1").get("key2"); 

有没有任何方法可以使用lambda来获取时间t的值,而不需要介于两者之间的NullPointerException。因此,如果key1返回null值,那么t应该为null,代码不应该抛出null指针

使用Java8中引入的getOrDefault,并将键和Collections.emptyMap()作为默认值。这是它的样子。

Time t = map.getOrDefault("key1", Collections.emptyMap()).get("key2");

在Java 8 中

Time t = Optional.ofNullable(map.get("key1"))
.map(m -> m.get("key2"))
.orElse(null);

最新更新